Chess / Tic-Tac-Toe Engine — Detailed
classDiagram
direction TB
class Game {
-board: Board
-players: List~Player~
-turn: Color
-history: List~Move~
-status: GameStatus
+makeMove(m)
+undo()
+status()
}
class Board {
-squares: Map Pos -> Square
+get(pos)
+set(pos, piece)
+copy() Board
}
class Square {
-pos
-piece
}
class Piece {
<<abstract>>
-color
+legalMoves(board, pos) List~Move~
}
class King
class Queen
class Rook
class Bishop
class Knight
class Pawn
class Move {
+from
+to
+piece
+captured
+promote
+special: SpecialMove
}
class SpecialMove {
<<enumeration>>
NONE
EN_PASSANT
CASTLING
PROMOTION
}
class Rules {
+isLegal(m, game) bool
+inCheck(c, board) bool
+checkmate(game) bool
+stalemate(game) bool
+threefoldRepetition(game) bool
+fiftyMoveRule(game) bool
}
class GameStatus {
<<enumeration>>
ACTIVE
CHECK
CHECKMATE
STALEMATE
DRAW
}
class Player {
+name
+color
+rating
}
class AIPlayer
class HumanPlayer
class TimeControl
Game *-- Board
Game *-- "many" Player
Game --> Rules
Game --> GameStatus
Board *-- "many" Square
Square o-- Piece
Piece <|-- King
Piece <|-- Queen
Piece <|-- Rook
Piece <|-- Bishop
Piece <|-- Knight
Piece <|-- Pawn
Player <|-- AIPlayer
Player <|-- HumanPlayer
Game --> Move
Move --> SpecialMove
Game --> TimeControl
Glossary & fundamentals