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
..
2026-09-27 09:52:00 +02:00
2026-09-27 09:52:00 +02:00

wizard_game

Pure-Python rules engine of Wizard (no dependencies). It is used by the game server and can be installed on its own to train AI players:

pip install ./wizard_server/game_logic
import random
from wizard_game import WizardGame, GameOptions

game = WizardGame(num_players=4, options=GameOptions(hidden_bids=True), seed=1)
rng = random.Random(1)
while not game.is_finished:
    player = game.current_player
    obs = game.observation(player)          # what this player may see
    action = rng.choice(obs.legal_actions)  # Bid / PlayCard
    events = game.apply(player, action)     # TrickCompleted, RoundCompleted, ...
print(game.scores, game.winners())

Observation.to_dict() / Observation.from_dict() and action_to_dict() / action_from_dict() define the JSON format that the server sends to web clients and to the AI service.