def run(self): menu = Menu(self.screen) hs_screen = HighScoreScreen(self.screen, self.score_keeper) intro_seq = Intro(self.screen) e_loop = EventLoop( loop_running=True, actions={pygame.MOUSEBUTTONDOWN: menu.check_buttons}) while e_loop.loop_running: self.clock.tick(60) # 60 fps limit e_loop.check_events() self.screen.fill(PacManPortalGame.BLACK_BG) if not menu.hs_screen: intro_seq.update() # display intro/menu intro_seq.blit() menu.update() menu.blit() else: hs_screen.blit() # display highs score screen hs_screen.check_done() if menu.ready_to_play: pygame.mixer.music.stop() # stop menu music self.play_game() # player selected play, so run game for g in self.ghosts: g.reset_speed() menu.ready_to_play = False self.score_keeper.save_high_scores( ) # save high scores only on complete play hs_screen.prep_images() # update high scores page hs_screen.position() elif not pygame.mixer.music.get_busy(): pygame.mixer.music.play(-1) # music loop pygame.display.flip()
def play_game(self): """Run the game's event loop, using an EventLoop object""" e_loop = EventLoop(loop_running=True, actions={ **self.player.event_map, **self.actions }) # game init signal # pygame.time.set_timer(PacManPortalGame.START_EVENT, self.level_transition.transition_time) self.level_transition.set_show_transition() self.game_over = False if self.player.dead: self.player.revive() self.score_keeper.reset_level() self.life_counter.reset_counter() self.rebuild_maze() while e_loop.loop_running: self.clock.tick(60) # 60 fps limit e_loop.check_events() self.update_screen() if self.game_over: pygame.mixer.stop() self.score_keeper.reset_level() e_loop.loop_running = False
def run(self): """Run the application loop so that the menu can be displayed and the game started""" loop = EventLoop(loop_running=True, actions=self.menu.action_map) while True: loop.check_events() self.update() if self.menu.start: self.game_active = True self.timer = 400 self.time_warn = False self.start_game() self.menu.start = False self.game_active = False self.game_won = False self.init_world()
def play(self): pacman = self.pacman maze = self.maze ghost = [] for i in range(1): g = Ghost(self.screen) g.type = i g.x += 30 * i g.prep_ghost() ghost.append(g) eloop = EventLoop(status=False) while not eloop.finished: eloop.check_events(pacman) eloop.update_screen(pacman) pacman.update(maze, self.gamestats, self.pacmanGroup) for i in range(1): ghost[i].blit() self.update_screen()
def play_game(self): e_loop = EventLoop(loop_running=True, actions={ **self.player.event_map, **self.actions }) self.level_transition.set_show_transition() self.game_over = False if self.player.dead: self.player.revive() self.score_keeper.reset_level() self.life_counter.reset_counter() self.rebuild_maze() while e_loop.loop_running: self.clock.tick(60) # 60 fps limit e_loop.check_events() self.update_screen() if self.game_over: pygame.mixer.stop() self.score_keeper.reset_level() e_loop.loop_running = False
def start_game(self): """Launch the game and begin checking for events""" loop = EventLoop(loop_running=True, actions=self.action_map) self.score = 0 self.lives = 3 self.coins = 0 while loop.loop_running and self.game_active: self.clock.tick(60) # 60 fps cap loop.check_events() self.update() if self.mario.state_info['death_finish']: self.handle_player_killed() elif not pygame.mixer.music.get_busy() and self.game_won: self.menu.high_score.save(self.score) self.game_active = False elif not pygame.mixer.music.get_busy( ) and self.mario.state_info['dead']: pygame.mixer.music.load('audio/Mario-Die.wav') pygame.mixer.music.play() elif not pygame.mixer.music.get_busy() and not self.paused: pygame.mixer.music.load('audio/BG-Main.wav') pygame.mixer.music.play(-1)