MCPcopy
hub / github.com/CharlesPikachu/Games / startLevelGame

Method startLevelGame

cpgames/core/games/pacman/pacman.py:79–164  ·  view source on GitHub ↗
(self, cfg, resource_loader, level, screen, font)

Source from the content-addressed store, hash-verified

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':

Callers 1

runMethod · 0.95

Calls 9

QuitGameFunction · 0.85
setupWallsMethod · 0.80
setupGateMethod · 0.80
setupPlayersMethod · 0.80
setupFoodMethod · 0.80
changeSpeedMethod · 0.80
tickMethod · 0.80
updateMethod · 0.45
drawMethod · 0.45

Tested by

no test coverage detected