Exemplo n.º 1
0
class Game(EventObserver):
    def __init__(self, window_surface, container, event_handler):
        super().__init__(container, event_handler)
        self.react_cases = {RESPAWN: self.respawn, GAME_OVER: self.delete_ghost, EXIT: self.exit, WON: self.game_won}
        self.rect_matrix = RectMatrix(ACTUAL_LVL)
        self.fps = 60
        self.current_key = K_LEFT
        self.current_enemy_key = K_RIGHT
        self.game_on = True
        self.window_surface = window_surface
        self.paused = False
        self.game_state = GameState(container, event_handler)
        self.reset_objects()
        self.game_loop = GameLoop(window_surface, container, self)

    def start_game(self):
        main_clock = pygame.time.Clock()
        while self.game_on:
            for event in pygame.event.get():
                if event.type == KEYDOWN and event.key in PLAYER_ONE_KEYS + [K_s, K_w]:
                    if event.key == K_s:
                        self.fps -= 5
                    elif event.key == K_w:
                        self.fps += 5
                    else:
                        self.current_key = event.key
                elif event.type == QUIT:
                    sys.exit(0)

            self.game_loop.perform_one_cycle([self.current_key])
            main_clock.tick(self.fps)

    def game_won(self):
        self.container.pac_man.active = False
        del self.container.ghosts[:]

    def respawn(self):
        if self.game_state.lives_left != 0:
            self.reset_objects()
            self.event_handler.add_event(REPAINT)
        else:
            self.game_on = False

    def delete_ghost(self):
        self.container.del_objects()

    def exit(self):
        self.game_on = False

    def reset_objects(self):
        self.container.del_objects()
        PacMan(2, 1, self.rect_matrix, self.container, self.event_handler, self.game_state.score)
        self.reset_ghosts()

    def reset_ghosts(self):
        Blinky(13, 11, self.rect_matrix, self.container, self.event_handler)
        Pinky(11, 13, self.rect_matrix, self.container, self.event_handler)
        Inky(13, 13, self.rect_matrix, self.container, self.event_handler)
        Clyde(15, 13, self.rect_matrix, self.container, self.event_handler)
Exemplo n.º 2
0
 def __init__(self, window_surface, container, event_handler):
     super().__init__(container, event_handler)
     self.react_cases = {RESPAWN: self.respawn, GAME_OVER: self.delete_ghost, EXIT: self.exit, WON: self.game_won}
     self.rect_matrix = RectMatrix(ACTUAL_LVL)
     self.fps = 60
     self.current_key = K_LEFT
     self.current_enemy_key = K_RIGHT
     self.game_on = True
     self.window_surface = window_surface
     self.paused = False
     self.game_state = GameState(container, event_handler)
     self.reset_objects()
     self.game_loop = GameLoop(window_surface, container, self)