This project is a checkers engine that allows you to play against a bot using the minimax algorithm.
Created by Ryan Hellwege, Ahad Ahmad, Brian Wei
- Make sure you have Python installed.
- In the terminal, make sure you are pointing to the folder that contains these files.
- Enter
python gui.pyorpython3 gui.pyin the terminal. You will then see the GUI. - To play, click on the red piece and click on the circled blank squares. The circled blank squares signify a legal move.
- On the right, you can see options to toggle:
- Show Best Move (on/off)
- Forced Capture (on/off)
- Reset Game
- Evaluation Function
- Simple
- Smart
- Advanced
- Depth Scheduler
- Static
- Iterative Deepening
- AI Depth (1-20)
- AI Time Limit (Iterative Deepening Only) [0-10]
- depth_4_100_games - Contains graph results for depth of 4 with 100 games played
- depth_6 - Contains graph results for games with depth of 6
- .gitignore - Git ignored files
- .python-version - Python version 3.13
- LICENSE - MIT license
- README.md - This file; explains how to run our program and other basic info
- board.py - Contains the board game logic and evaluation functions
- gui.py - Code for the GUI visualization
- main.py - main file
- minimax.py - Code for minimax implementation with alpha-beta pruning
- pyproject.toml - Project metadata
- statistics.py - Contains the code for collecting simulated game data for using game win percentages as a heuristic.
- test_board.py - File for testing purposes
- uv.lock - Defines metadata and dependencies for consistent installations
- array - Used in board.py for memory efficiency.
- tkinter - Used in gui.py to build the GUI for the checkers board.
- perf_counter (time) - Used in gui.py to measure AI response time.
- random - Used in minimax.py as a tiebreaker for equally optimal moves
- lru_cache (functools) - Used in minimax.py to cache results from minimax func. More computationally efficient than other options.
- time (time) - Used in minimax.py to enforce time limit in IDDFS search.
- os - Used in statistics.py for file path handling for graphs
- time (module) - Used in statistics.py to time how long AI makes a move
- defaultdict (collections) - Used in statistics.py to initialize nested dictionaries for stats
- matplotlib.pyplot - Used in statistics.py for statistical visualizations
- unittest - Used in test_board.py for testing board game logic