A simple chess engine written in C++ that conforms to the rules of chess as defined by FIDE (with the exception of a few unimplemented rules related to draws - see Planned Features for more information). The engine supports two game modes (player vs. player and player vs. engine - although currently this must be configured manually in the source code) and games can be played from the classical starting position or from a custom position specified in an FEN file. The engine uses alpha-beta pruning with captures-first move ordering and does a material count and pawn structure evaluation to evaluate heuristic nodes. It reads and displays move descriptions in algebraic notation.
- Draw by insufficient material.
- Transposition table and iterative deepening.
- Support for PGN file imports.
- Support for FEN and PGN file exports.
- Separate play and evaluation/analysis modes.
- Improved text formatting (
libncurses).
make
./chess [options]