class Player(object): def __init__(self, game, point_config='STD_CONFIG', uid=1, max_turns=3): self.game = game self.id = uid self.turn = 0 self.points = Points(config=point_config) self.dice = Dice() self.max_turns = max_turns def save_dice(self, values): self.dice.save(values) def entry_points(self, field, column, values, preview=False): score = self.points.entry(field, column, values, self.game, preview=preview) if not preview: self.game.next_player() self.turn = 0 if all([all([i[1] for i in column.points.values()]) for column in self.points.columns]): raise PlayerFinishedException() return score def roll_dice(self): if self.turn >= self.max_turns: raise NoTurnsLeftException() self.dice.roll() self.turn += 1 def delete(self): if self.game.active_player == self: self.game.next_player() del self.game.players[self.game.players.index(self)] @classmethod def generate_players(cls, game, count, point_config): return [cls(game, point_config=point_config, uid=i) for i in range(1, count+1)]