Support taking general actions also in general game

This commit is contained in:
Maximilian Keßler 2023-11-23 12:30:50 +01:00
parent d9afe3bff4
commit daea750535
Signed by: max
GPG key ID: BCC5A619923C0BA5
2 changed files with 15 additions and 15 deletions

View file

@ -252,6 +252,21 @@ class GameState:
self.clues -= 1 self.clues -= 1
self._make_turn() self._make_turn()
def make_action(self, action):
match action.type:
case ActionType.ColorClue | ActionType.RankClue:
assert self.clues > 0
self.actions.append(action)
self.clues -= self.instance.clue_increment
self._make_turn()
# TODO: could check that the clue specified is in fact legal
case ActionType.Play:
self.play(action.target)
case ActionType.Discard:
self.discard(action.target)
case ActionType.EndGame | ActionType.VoteTerminate:
self.over = True
# Forward some properties of the underlying instance # Forward some properties of the underlying instance
@property @property
def num_players(self): def num_players(self):

View file

@ -125,21 +125,6 @@ class HanabLiveGameState(hanab_game.GameState):
} }
} }
def make_action(self, action):
match action.type:
case hanab_game.ActionType.ColorClue | hanab_game.ActionType.RankClue:
assert(self.clues > 0)
self.actions.append(action)
self.clues -= self.instance.clue_increment
self._make_turn()
# TODO: could check that the clue specified is in fact legal
case hanab_game.ActionType.Play:
self.play(action.target)
case hanab_game.ActionType.Discard:
self.discard(action.target)
case hanab_game.ActionType.EndGame | hanab_game.ActionType.VoteTerminate:
self.over = True
def _waste_clue(self) -> hanab_game.Action: def _waste_clue(self) -> hanab_game.Action:
for player in range(self.turn + 1, self.turn + self.num_players): for player in range(self.turn + 1, self.turn + self.num_players):
for card in self.hands[player % self.num_players]: for card in self.hands[player % self.num_players]: