(self, cfg, resource_loader, level, screen, font)
| 77 | self.showText(cfg, screen, font_big, is_clearance) |
| 78 | '''开始某一关游戏''' |
| 79 | def startLevelGame(self, cfg, resource_loader, level, screen, font): |
| 80 | clock = pygame.time.Clock() |
| 81 | SCORE = 0 |
| 82 | wall_sprites = level.setupWalls(cfg.SKYBLUE) |
| 83 | gate_sprites = level.setupGate(cfg.WHITE) |
| 84 | hero_sprites, ghost_sprites = level.setupPlayers(resource_loader.images['pacman'], resource_loader.images['ghost']) |
| 85 | food_sprites = level.setupFood(cfg.YELLOW, cfg.WHITE) |
| 86 | is_clearance = False |
| 87 | while True: |
| 88 | for event in pygame.event.get(): |
| 89 | if event.type == pygame.QUIT: |
| 90 | QuitGame() |
| 91 | if event.type == pygame.KEYDOWN: |
| 92 | if event.key == pygame.K_LEFT: |
| 93 | for hero in hero_sprites: |
| 94 | hero.changeSpeed([-1, 0]) |
| 95 | hero.is_move = True |
| 96 | elif event.key == pygame.K_RIGHT: |
| 97 | for hero in hero_sprites: |
| 98 | hero.changeSpeed([1, 0]) |
| 99 | hero.is_move = True |
| 100 | elif event.key == pygame.K_UP: |
| 101 | for hero in hero_sprites: |
| 102 | hero.changeSpeed([0, -1]) |
| 103 | hero.is_move = True |
| 104 | elif event.key == pygame.K_DOWN: |
| 105 | for hero in hero_sprites: |
| 106 | hero.changeSpeed([0, 1]) |
| 107 | hero.is_move = True |
| 108 | if event.type == pygame.KEYUP: |
| 109 | if (event.key == pygame.K_LEFT) or (event.key == pygame.K_RIGHT) or (event.key == pygame.K_UP) or (event.key == pygame.K_DOWN): |
| 110 | hero.is_move = False |
| 111 | screen.fill(cfg.BLACK) |
| 112 | for hero in hero_sprites: |
| 113 | hero.update(wall_sprites, gate_sprites) |
| 114 | hero_sprites.draw(screen) |
| 115 | for hero in hero_sprites: |
| 116 | food_eaten = pygame.sprite.spritecollide(hero, food_sprites, True) |
| 117 | SCORE += len(food_eaten) |
| 118 | wall_sprites.draw(screen) |
| 119 | gate_sprites.draw(screen) |
| 120 | food_sprites.draw(screen) |
| 121 | for ghost in ghost_sprites: |
| 122 | # 幽灵随机运动(效果不好且有BUG) |
| 123 | ''' |
| 124 | res = ghost.update(wall_sprites, None) |
| 125 | while not res: |
| 126 | ghost.changeSpeed(ghost.randomDirection()) |
| 127 | res = ghost.update(wall_sprites, None) |
| 128 | ''' |
| 129 | # 指定幽灵运动路径 |
| 130 | if ghost.tracks_loc[1] < ghost.tracks[ghost.tracks_loc[0]][2]: |
| 131 | ghost.changeSpeed(ghost.tracks[ghost.tracks_loc[0]][0: 2]) |
| 132 | ghost.tracks_loc[1] += 1 |
| 133 | else: |
| 134 | if ghost.tracks_loc[0] < len(ghost.tracks) - 1: |
| 135 | ghost.tracks_loc[0] += 1 |
| 136 | elif ghost.role_name == 'Clyde': |
no test coverage detected