Chess AI utilizing minmax algorithm with alpha-beta pruning (fail-soft), enhanced with heuristics for piece valuation and positional play. Developed with PyQt6 for graphical user interface.
The AI employs several heuristic evaluations to improve its gameplay, making decisions based on a variety of factors:
- Material Positions: Evaluates the position of pieces on the board, taking into account their control over key squares and potential for movement.
- Material Balance: Considers the total value of pieces for both players, guiding the AI in material exchanges and captures.
- Game Stage: Adapts strategy based on the phase of the game (opening/midgame, endgame), optimizing piece placement and prioritizing goals appropriate to each stage.
Ensure you have Python 3.8+ and pip installed on your system. Follow these steps to set up the game:
- Clone the Project Repository Make sure you have Python 3.8+ installed on your system. Clone the repository using the following command:
git clone https://leesamuel423/ai-chess.git
cd ai-chess
- Create and Activate a Virtual Environment A virtual environment is recommended to keep dependencies required by the project separate and to avoid any conflicts with other projects. Create a virtual environment by running:
# For Unix or MacOS
python3 -m venv venv
# For Windows
python -m venv venv
Activate the virtual environment with:
# For Unix or MacOS
source venv/bin/activate
# For Windows
venv\Scripts\activate
- Install Required Python Packages
Install all dependencies specified in the
requirements.txt
file using pip:
pip install -r requirements.txt
This command ensure that all the required Python packages, such as PyQt6 and python-chess, are installed in your virtual environment
- Running the Game Start the game with the following command:
python play.py
You will be prompted to select: - Initial side (W)hite or (B)lack - FEN (can input a custom FEN or default to initial board) - Example FEN: r1b1kb1r/pppp1ppp/2n1pq2/8/4P3/3P1Q2/PPP2PPP/RN2KBNR b KQkq - 1 5
Contributions are welcome. Below are known issues that need to be resolved
- UI Bug: When capturing AI piece, sometimes buggy
- AI: Shuffling pieces
- AI: Static Exchange Evaluation implementation
- AI: Castling priority
- AI: Early evaluation of endgame?
Testing can be done utilizing the following command:
pytest [[file_name]]