(self)
| 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 | # --弹弓 |
no test coverage detected