How aaronhovt/capstone-chess works
Capstone Chess is a Java chess engine with a Swing interface, a UCI protocol adapter, and validation/match tools. In the interactive workflow, a player uses the GUI to configure and play a game; the engine represents the position, generates legal moves, searches and evaluates candidate moves, then returns a move for display. UCI provides a separate external control path for setting positions and search limits. The README documents perft, tactical/evaluation checks, opening-book verification, and engine matches. Excerpts are partial, so uncertain internal call wiring is omitted.
Main entry points: Board.java Position Board · AlphaBeta.java Alpha-Beta Search · Table.java Swing Table · UciEngine.java UCI Adapter
Components 23
User Interfaces
- Swing Table
src/engine/forGUI/Table.java - Game Setup
src/engine/forGUI/GameSetup.java - Game History
src/engine/forGUI/GameHistoryPanel.java - GUI Entry
src/engine/engineDriver.java - UCI Adapter
src/engine/forUCI/UciEngine.java
Chess Model
- Position Board
src/engine/forBoard/Board.java - Legal Moves
src/engine/forBoard/Move.java - Chess Pieces
src/engine/forPiece/Piece.java - Side To Move
src/engine/forPlayer/Player.java - FEN Parser
src/engine/forTesting/FenParser.java - Position Hashing
src/engine/forBoard/ZobristHashing.java
Search And Evaluation
- Alpha-Beta Search
src/engine/forPlayer/forAI/AlphaBeta.java - Move Strategy
src/engine/forPlayer/forAI/MoveStrategy.java - Position Evaluators
src/engine/forPlayer/forAI/BoardEvaluator.java - Game State Detection
src/engine/forPlayer/forAI/GameStateDetector.java
Validation Tools
- Perft Validation
src/engine/forTesting/PerftSuite.java - Tactical Tests
src/engine/forTesting/TacticalSuite.java - Evaluation Checks
src/engine/forTesting/EvaluationSuite.java - Opening Book Check
src/engine/forTesting/OpeningBook.java - Self-Play Match
src/engine/forTesting/SelfPlayMatch.java - Engine Process
src/engine/forTesting/EngineProcess.java
Other components
- Chess Player
- Chess GUI / Runner
Connections 25
- Chess Player → Swing Table: plays through
- GUI Entry → Swing Table: opens
- Swing Table → Game Setup: configures
- Swing Table → Position Board: uses position
- Swing Table → Alpha-Beta Search: requests move
- Swing Table → Game History: updates history
- Chess GUI / Runner → UCI Adapter: sends commands
- UCI Adapter → Position Board: sets position
- UCI Adapter → FEN Parser: parses FEN
- UCI Adapter → Alpha-Beta Search: starts search
- UCI Adapter → Legal Moves: resolves moves
- Position Board → Side To Move: tracks turns
- Position Board → Chess Pieces: holds pieces
- Side To Move → Legal Moves: provides legal moves
- Alpha-Beta Search → Move Strategy: implements strategy
- Alpha-Beta Search → Position Evaluators: scores positions
- Alpha-Beta Search → Game State Detection: checks outcomes
- Alpha-Beta Search → Position Board: searches positions
- Position Board → Position Hashing: updates hash
- Perft Validation → Position Board: counts move trees
- Tactical Tests → Alpha-Beta Search: checks search
- Evaluation Checks → Position Evaluators: checks scores
- Opening Book Check → Position Board: validates openings
- Self-Play Match → Engine Process: runs engines
- Engine Process → UCI Adapter: speaks UCI