feat: enhance evaluation logic with mobility scoring and positional bonuses

This commit is contained in:
2026-04-07 19:55:42 +02:00
committed by Janis
parent 8e208b8a25
commit 0bc7282dfa
6 changed files with 172 additions and 30 deletions
+1
View File
@@ -47,6 +47,7 @@ Try to stick to these commands for consistency.
- **Immutable state as primary model:** GameContext (api) holds board, history, player state — immutable, passed through the system. Each move creates a new GameContext, enabling undo/redo without side effects.
- **Observer pattern for UI decoupling:** GameEngine publishes move/state events; CommandInvoker queues moves; UI listens to events, not polling. GameEngine never imports UI code.
- **RuleSet trait encapsulates rules:** Move generation, check, castling, en passant all in RuleSet impl. GameEngine calls rules as a black box; rules don't know about the rest of core.
- **Polyglot hash must follow spec index layout:** piece keys use interleaved mapping `(pieceType * 2 + colorBit)` with black=0/white=1, castling keys are `768..771`, en-passant file keys are `772..779` and are XORed only if side-to-move has a pawn that can capture en passant, side-to-move key is `780` for white.
## Rules