From dc4795bf7a9991fca4673bf928830b7b627034e4 Mon Sep 17 00:00:00 2001 From: haoyuren <13851610112@163.com> Date: Sun, 22 Feb 2026 03:07:47 -0600 Subject: Update rules: free draw/pass, remove Q in 2-player games - Players can freely choose to draw even with playable cards - After drawing, players may pass instead of playing - Remove Q cards from deck in 2-player games (reverse has no effect) - Use greedy random opponent in evaluation Co-Authored-By: Claude Opus 4.6 --- blazing_env.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'blazing_env.py') diff --git a/blazing_env.py b/blazing_env.py index c3d97ae..c440293 100644 --- a/blazing_env.py +++ b/blazing_env.py @@ -15,7 +15,10 @@ Special cards: Rules: - Match top card by suit OR rank (unless playing 8 or Swap) - - Can't play → draw 1; if drawn card is playable, play it immediately + - Player may freely choose to draw even if they have playable cards + - After drawing, player may play any playable card OR pass (end turn) + - Each turn allows at most one draw + - If no playable cards and deck is empty, player must pass - First player to empty hand wins - Initial hand: 5 cards each """ @@ -92,7 +95,9 @@ class BlazingEightsEnv: self.rng = np.random.default_rng(seed) # Build & shuffle deck - deck = list(range(NUM_CARDS)) + # In 2-player games, remove Q cards (reverse has no effect) + deck = [c for c in range(NUM_CARDS) + if not (self.num_players == 2 and card_rank(c) == RANK_Q)] self.rng.shuffle(deck) # Deal 5 cards each -- cgit v1.2.3