How patvakanyan/chess works
This is a C++ chess engine with a terminal game loop. A player selects a color, enters moves or requests undo, and sees the updated board and game result. The main domain stages are position parsing, move execution, board and history updates, and end-state checks; piece-specific movement and attack detection provide the rules layer. The graph reflects documented capabilities where source was not sampled, but omits uncertain implementation links.
Main entry points: terminal.cpp Terminal loop · board.cpp Board · game.cpp Game controller · pieces Piece movement rules
Components 13
Terminal interface
- Application entry
src/main.cpp - Terminal loop
src/terminal.cpp
Game state
- Game controller
src/game.cpp - Board
src/board.cpp - Square
src/square.cpp - Move execution
src/move.cpp - Move history
src/moveHistory.cpp
Chess rules
- Position parsing
src/position.cpp - Piece abstraction
src/piece.cpp - Piece movement rules
src/pieces - Rule checks
src/chessUtils.cpp - Game result types
include/chess/utils/chessGameResult.hpp
Other components
- Player
Connections 15
- Player → Terminal loop: enters moves
- Application entry → Terminal loop: starts loop
- Terminal loop → Game controller: starts and controls
- Terminal loop → Position parsing: parses coordinates
- Terminal loop → Rule checks: checks game end
- Terminal loop → Game result types: displays outcomes
- Game controller → Board: sets up and reads
- Game controller → Move execution: executes moves
- Game controller → Move history: records and undoes
- Move execution → Board: updates position
- Board → Square: stores squares
- Piece movement rules → Piece abstraction: implements types
- Rule checks → Board: checks board state
- Piece movement rules → Board: queries legal moves
- Move history → Board: restores moves