Files
marvinandClaude Opus 5.5 21a2b044d9 Trump card: draw from the stack, no trump for wizards and jesters
- Deal the hands from the shuffled stack and draw the trump card from it,
  so the trump card is in nobody's hand and cannot be played
- A wizard or jester as trump card means no trump suit (previously a
  wizard let the dealer choose); remove the trump selection phase, the
  ChooseTrump action, the trump picker UI and the AI trump actions
- Completed tricks carry their round's trump card, so the table keeps
  showing the matching trump card while the last trick of a round is
  displayed
- Card corners are no longer rotated, so 6 and 9 cannot be confused
- Trump label explains why there is no trump (wizard, jester, last round)
- Tests: trump card never dealt, special cards give no trump, tricks keep
  their trump card

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 10:28:53 +02:00

55 lines
1.1 KiB
Python

"""Rules engine of the Wizard card game.
This package is independent of the game server so that it can also be used
to train AI players.
"""
from .actions import Action, Bid, PlayCard, action_from_dict, action_to_dict
from .cards import ALL_CARDS, DECK_SIZE, SUITS, Card, CardKind, Suit, card_by_id
from .game import IllegalActionError, WizardGame
from .observation import Observation
from .rules import MAX_PLAYERS, MIN_PLAYERS, total_rounds
from .state import (
Event,
GameFinished,
GameOptions,
Phase,
PlayedCard,
RoundCompleted,
RoundResult,
RoundStarted,
TrickCompleted,
TrickResult,
)
__all__ = [
"ALL_CARDS",
"DECK_SIZE",
"MAX_PLAYERS",
"MIN_PLAYERS",
"SUITS",
"Action",
"Bid",
"Card",
"CardKind",
"Event",
"GameFinished",
"GameOptions",
"IllegalActionError",
"Observation",
"Phase",
"PlayCard",
"PlayedCard",
"RoundCompleted",
"RoundResult",
"RoundStarted",
"Suit",
"TrickCompleted",
"TrickResult",
"WizardGame",
"action_from_dict",
"action_to_dict",
"card_by_id",
"total_rounds",
]