コード例 #1
0
ファイル: game.py プロジェクト: mikemill/misc
class Game(object):
    target_gem_count = 5

    def __init__(self):
        self.map = GameMap()
        self.player = None
        self.grue = None
        self.turn = 0

    def new_game(self):
        self.player = Player(self.map)
        self.grue = Grue(self.map, self.player)
        self.turn = 0

    def tick(self, player_direction):
        actions = []

        new_room = self.player.move(player_direction)
        actions.append({
            'action': 'player_move',
            'success': new_room is not None,
            'room': new_room,
            'target': self.map.is_target(self.player.room),
            'direction': player_direction,
        })

        if self.player.room == self.grue.room:
            self.grue.flee()
            self.player.gems += 1
            actions.append({
                'action': 'gem',
                'gem_count': self.player.gems,
                'goal_reached': self.player.gems == self.target_gem_count,
                'room': self.grue.room,
            })

        self.turn += 1

        if self.won():
            actions.append({
                'action': 'won',
            })
        elif self.turn == 3:
            self.turn = 0
            actions.append({
                'action': 'rest',
            })

            self.grue.move()

            if self.grue.room == self.player.room:
                self.player.killed()
                actions.append({
                    'action': 'killed',
                    'room': self.player.room,
                })

        return actions

    def won(self):
        return (self.map.is_target(self.player.room)
                and self.player.gems == self.target_gem_count)