chess.py is small, text-based chess game implementing all known rules of chess (including the oft-forgotten "en passant" special capture rule :-)
Currently, python3 is the only dependency, so the game should also run on Windows and MacOS X.
Chess pieces are represented with the standard unicode characters
In the future I will add a graphical user interface (likely using the 'pygame' library)
(The game is currently completely terminal/command-line based. At the moment, the player selects pieces by typing the coordinates (eg. 'e2' followed by 'e4' to play the famous "King's Pawn" opening move).)
Core gameplay is complete, with all known chess mechanics implemented:
- Pawn
- Promotion
- En passant special capture
- Knight
- Bishop
- King
- King/Rook Castling
- Rook
- Queen
- Main game logic: Turn-based basic playable game mechanics
- Check/checkmate detection
- Draw detection
- Stalemate
- Impossibility of checkmate ("insufficient mating material rule")
- 3-fold repetition
- 50-move rule
chess.py was written during freetime between December 2013 and January 2014, but was abandoned near-completion of terminal-based gameplay. After a 4 year hiatus, development was resumed with the left-over gameplay mechanics (described above) being quickly implemented.
With the terminal-based chess game fully completed, it serves as a building block for future projects:
- Refactor terminal application into client/server architecture
- Communication of each player via JSON messages send over TCP sockets
- [] Provide opponent connection status etc
- [] Confirm validity of JSON messages
- [] Create a TypeScript 'chess.ts' client
- [] Host chess.py on a persistent cloud server, with chess.ts as the frontend
- [] Host multiple sessions
- [] Computer player AI bot
- [] Graphical user interface (in python) with move selection through mouse clicks
- [] Create Android client (with the Flutter UI framework) and publish on app store