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

Method start

cpgames/core/games/angrybirds/modules/gamelevels.py:268–427  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

266 clock.tick(self.cfg.FPS)
267 '''开始游戏'''
268 def start(self):
269 # 导入所有游戏精灵
270 game_sprites = self.loadlevelmap()
271 birds, pigs, blocks, walls = game_sprites['birds'], game_sprites['pigs'], game_sprites['blocks'], game_sprites['walls']
272 slingshot = Slingshot(self.screen, 200, self.screen_size[1] - 200, 30, 200)
273 birds[0].load(slingshot)
274 score_label = Label(self.screen, 50, 10, 100, 50)
275 score_label.addtext(f'SCORE: {self.score}', 25, self.cfg.FONT_PATHS_DICT_NOINIT['Comic_Kings'], (236, 240, 241))
276 birds_remaining_label = Label(self.screen, 120, 50, 100, 50)
277 birds_remaining_label.addtext(f"BIRDS REMAINING: {len(birds)}", 25, self.cfg.FONT_PATHS_DICT_NOINIT['Comic_Kings'], (236, 240, 241))
278 pigs_remaining_label = Label(self.screen, 110, 90, 100, 50)
279 pigs_remaining_label.addtext(f"PIGS REMAINING: {len(pigs)}", 25, self.cfg.FONT_PATHS_DICT_NOINIT['Comic_Kings'], (236, 240, 241))
280 charles_label = Label(self.screen, self.screen_size[0] - 270, self.screen_size[1] - 20, 300, 100)
281 charles_label.addtext('CHARLES', 60, self.cfg.FONT_PATHS_DICT_NOINIT['arfmoochikncheez'], (113, 125, 126))
282 # 游戏主循环
283 clock = pygame.time.Clock()
284 blocks_to_remove, pigs_to_remove = [], []
285 while True:
286 # --按键检测
287 for event in pygame.event.get():
288 if event.type == pygame.QUIT:
289 QuitGame()
290 elif event.type == pygame.KEYDOWN:
291 if event.key == pygame.K_q:
292 QuitGame()
293 elif event.key == pygame.K_r:
294 self.start()
295 elif event.key == pygame.K_p or event.key == pygame.K_ESCAPE:
296 self.pauseinterface()
297 elif event.type == pygame.MOUSEBUTTONDOWN:
298 if birds[0].selected():
299 birds[0].is_selected = True
300 elif event.type == pygame.MOUSEBUTTONUP:
301 if birds[0].is_selected:
302 birds[0].is_selected = False
303 birds[0].start_flying = True
304 # --背景颜色填充
305 color = self.cfg.BACKGROUND_COLOR
306 for i in range(3):
307 color = (color[0] + 5, color[1] + 5, color[2] + 5)
308 pygame.draw.rect(self.screen, color, (0, i * 300, self.screen_size[0], 300))
309 pygame.draw.rect(self.screen, (77, 86, 86), (0, self.screen_size[1], self.screen_size[0], 50))
310 # --判断游戏是否结束,若没有则导入新的小鸟
311 if (not birds[0].is_loaded) and self.still(pigs + birds + blocks):
312 birds.pop(0)
313 if self.status(pigs, birds) == 2:
314 self.score += len(birds) * 100
315 self.switchlevelinterface()
316 elif self.status(pigs, birds) == 1:
317 self.failureinterface()
318 birds[0].load(slingshot)
319 birds[0].start_flying = False
320 # --重置小鸟的位置
321 if birds[0].is_selected:
322 birds[0].reposition(slingshot)
323 if hasattr(birds[0], 'start_flying') and birds[0].start_flying:
324 birds[0].is_loaded = False
325 # --弹弓

Callers 3

startgameMethod · 0.95
replayMethod · 0.95
restartMethod · 0.95

Calls 15

loadlevelmapMethod · 0.95
addtextMethod · 0.95
pauseinterfaceMethod · 0.95
stillMethod · 0.95
statusMethod · 0.95
switchlevelinterfaceMethod · 0.95
failureinterfaceMethod · 0.95
drawMethod · 0.95
collisionMethod · 0.95
drawMethod · 0.95
SlingshotClass · 0.85
LabelClass · 0.85

Tested by

no test coverage detected