diff --git a/game_functions.py b/game_functions.py index a7e95c1..4dc62b8 100644 --- a/game_functions.py +++ b/game_functions.py @@ -101,4 +101,37 @@ def update_bullets(ai_settings, screen, stats, sb, ship, aliens, bullets, bossal if bullet.rect.bottom <= 0: bullets.remove(bullet) - check_bullet_collisions(ai_settings, screen, stats, sb, ship, aliens, bossalien, bullets, bossbullet) \ No newline at end of file + check_bullet_collisions(ai_settings, screen, stats, sb, ship, aliens, bossalien, bullets, bossbullet) +def check_bullet_collisions(ai_settings, screen, stats, sb, ship, aliens, bossalien, bullets, bossbullet): + """响应子弹和外星人的碰撞,以及外星人子弹和船的碰撞""" + # 增加:只有在非BOSS关才启用 + if stats.level != stats.bosslevel: + + # 删除发生碰撞的子弹和外星人 + collisions = pygame.sprite.groupcollide(bullets, aliens, True, True) + + if collisions: + for aliens in collisions.values(): + stats.score += ai_settings.alien_points * len(aliens) + sb.prep_score() + check_high_score(stats, sb) + + if len(aliens) == 0: + # 如果整群外星人都被消灭,就提高一个等级 + bullets.empty() + ai_settings.increase_speed() + + # 增加:播放音效 + pygame.mixer.init() + sound = pygame.mixer.Sound('sounds/levelup.wav') + sound.play() + + # 提高等级 + stats.level += 1 + sb.prep_level() + + # 如果当前关卡下一关是BOSS关就不要再生成舰队 + if stats.level != stats.bosslevel - 1: + create_fleet(ai_settings, screen, ship, aliens) + else: + pass \ No newline at end of file