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(self): menu = Menu(self.screen) hs_screen = HighScoreScreen(self.screen, self.score_keeper) intro_seq = Intro(self.screen) loop = Events(runs=True, actions={pygame.MOUSEBUTTONDOWN: menu.check}) while loop.runs: self.clock.tick(60) loop.check_events() self.screen.fill((0, 0, 0)) if not menu.hs_screen: intro_seq.update() intro_seq.blit() menu.update() menu.blit() else: hs_screen.blit() hs_screen.check_done() if menu.ready_to_play: pygame.mixer.music.stop() pygame.mixer.music.load('sounds/waka.wav') pygame.mixer.music.play() self.play_game() menu.ready_to_play = False self.score_keeper.save_high_scores() hs_screen.prep_images() hs_screen.position() elif not pygame.mixer.music.get_busy(): pygame.mixer.music.play(-1) pygame.display.flip()
game_over_button = Button(screen, "New", screen_rect.centerx - 100, screen_rect.centery, (100, 150, 50)) quit_button = Button(screen, "quit", screen_rect.centerx - 100, screen_rect.centery + 70, (100, 150, 50)) return_intro_button = Button(screen, "return intro", screen_rect.centerx - 100, screen_rect.centery + 130, (100, 150, 50)) camera = Camera() intro = Intro(screen, stats) shop = Shop(screen, stats) help_image = gf.load_image('help.png') while stats.game_active: # действия с квавиатуры и мыши gf.key_evens(screen, player, bullets, ladder_group, door_group, play_button, game_over_button, camera, stats, intro, background, end_group, enemy_group, wall_group_down, wall_group_up, ground_group, quit_button, return_intro_button, traider_group, shop) if stats.game_intro: # интро игры intro.blit() else: if stats.game_return: # переход через интро gf.new_fleet(screen, background, end_group, enemy_group, wall_group_down, wall_group_up, ladder_group, ground_group, door_group, stats, player, camera, traider_group) stats.game_return = False # обновление останавлиывается если пауза или магазин или окончание игры if not stats.game_over and not stats.game_pause and not stats.game_shop: gf.update_screen(screen, background, player, bullets, wall_group_down, wall_group_up, ground_group, enemy_group, ladder_group, end_group, door_group, camera, stats, sb, player_group, traider_group) # прорисовка поля ground_group.draw(background) end_group.draw(background) wall_group_down.draw(background)