Детерминированный конечный автомат: apply(state, action) -> {state, events}.
Весь набор правил из GAMEPLAY.md проверяется headless-тестами.
- карты: Suit/Rank/Card (флайвейт, 36 штук), колода
- GameState + клонирование и сериализация в JSON
- действия (attack/defend/take/pass) и события для слоя отображения
- раздача, выбор первого атакующего, лимиты подкидывания,
взятие карт, добор, выбывание игроков, определение дурака
- 64 теста, strict typecheck
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4 lines
191 B
TypeScript
4 lines
191 B
TypeScript
export { Card, ALL_CARDS, buildDeck } from './Card';
|
|
export { Rank, ALL_RANKS, rankLabel, rankName } from './Rank';
|
|
export { Suit, ALL_SUITS, suitName, suitSymbol, isRedSuit } from './Suit';
|