A playable UCI chess engine.
-
Multithreaded UCI communication protocol (Universal Chess Interface)
-
Board representation
- 1D board array with separate piece lists. Hybrid of square- and piece-centric designs.
-
Move generation
- Pseudo-legal, legality checked during move tree traversal
- Perft and divide debugging functions
-
Search
- Negamax algorithm
- Alpha-beta optimizations
- Transposition table based on Zobrist hashing
-
Evaluation
- Piece mobility
- Pawn structure
- Piece square tables
- Evaluation tapering
Clone or unzip the repository (green Code button --> Download ZIP).
$ python3 game.py
$ python3 engine.py
- Python 3.6+
- Tkinter (to play against the computer)