A terminal-based chess engine built from scratch in Python using ASCII rendering and 2D lists — complete with full move validation, checkmate detection, persistent board saving, and chaotic AI personalities.
“Not FIDE-compliant, but compliant with something… maybe.”
- ✅ Complete move validation — every piece, every edge case, fully handled
- ✅ Check and checkmate logic — yes, it knows when you’re toast
- ✅ Persistent board state — auto-saves and resumes games via JSON
- 🤖 Three unique AI bots:
- Sir Meowzers – plays random but legal moves
- Miss Whiskers – doesn’t know the rules and doesn’t care
- Count Catstein – mostly legit… unless he decides not to be
- 💬 In-game quotes – bots talk trash to keep things interesting
- 🛠️ Custom AI support – easily plug in your own bots
- 👫 Pass and play – two players can share the same board
ChessEngine/
├── Source/
│ ├── main.py # Main game loop
│ ├── Validity.py # All move validation logic
│ ├── Checkmate.py # Check/checkmate logic
│ ├── ManipulateBoard.py # Handles piece moving
│ ├── Converter.py # Converts notation to 2D list coordinates
│ ├── Draw.py # Renders board in terminal
│ └── Bots/
│ ├── Sir_Meowzers.py
│ ├── Miss_Whiskers.py
│ └── Count_Catstein.py
├── board.json # Current saved board state
├── single_player.json # Saved state for bot matches
└── README.md
The full development timeline is documented in Journal.md, covering 4 intensive days of validation logic, AI creation, bug fixes, and general problem-solving.
- Clone the repo
- Run the main file from inside the
Source/folder:
python main.pyIf you get import errors, make sure you’re running from inside the Source/ directory or that Python is pointed to the right project root.
🤝 Credits Developed solo over 4 days
Original board rendering logic built in May
AI personalities inspired by chaos, cats, and caffeine
Miss Whiskers does not care about your laws
No actual cats were harmed in the making of this engine