Ejemplo n.º 1
0
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)]