A chess engine which implements:
- The Minimax algorithm for optimal movement analysis
- Alpha-beta pruning for move searching
- Move ordering based off heuristics like captures and promotions
- Tomasz Michniewski's Simplified Evaluation Function for board evaluation and piece-square tables
- A command-line user interface
It uses Python 3.8 with mypy type hints and unit + integration tests.
pip install -r requirements.txt
Start the engine with:
python3 chess_board.py
Start as [w]hite or [b]lack:
w
8 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
7 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
6 · · · · · · · ·
5 · · · · · · · ·
4 · · · · · · · ·
3 · · · · · · · ·
2 ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
1 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
a b c d e f g h
Your move (e.g. b1c3):
There are unit tests for the engine, UI, and evaluation modules.
python3 -m unittest discover tests/
Type checking:
mypy .