1.4 KiB
1.4 KiB
name, description, type
| name | description | type |
|---|---|---|
| chess_tui_implementation | Chess TUI in modules/core — MVC sub-packages under de.nowchess.chess | project |
Chess TUI standalone app implemented in modules/core, root package de.nowchess.chess.
Why: Initial feature to demonstrate the system's TUI capability per ADR-001. Refactored to MVC pattern to separate concerns.
How to apply: When extending chess logic (legality, castling, en passant, promotion), build on the existing Board opaque type in model and add extension methods there. The @main entry point is chessMain in Main.scala (root package). Game loop lives in GameController.
Package layout after MVC refactor:
de.nowchess.chess.model—Model.scala:Color,PieceType,Piece,Square,Board(opaque type)de.nowchess.chess.view—Renderer.scala: ANSI board rendererde.nowchess.chess.controller—Parser.scala: coordinate-notation parser;GameController.scala: game loopde.nowchess.chess—Main.scala:@main def chessMain()
Key design choices:
Boardis an opaque type overMap[Square, Piece]with extension methodsColorandPieceTypeare Scala 3 enumsRenderer.renderreturnsString, never printsParser.parseMovereturnsOption[(Square, Square)]— coordinate notation only (e.g.e2e4)- No move legality validation — moves are applied as-is
- ANSI 256-colour background codes used for light/dark squares (48;5;223 beige, 48;5;130 brown)