diff --git a/game_functions.py b/game_functions.py index 18fe749..8d871db 100644 --- a/game_functions.py +++ b/game_functions.py @@ -214,3 +214,24 @@ def get_number_rows(ai_settings, ship_height, alien_height): available_space_y = (ai_settings.screen_height - (3 * alien_height) - ship_height) number_rows = int(available_space_y / (2 * alien_height)) return number_rows + + +def update_aliens(ai_settings, screen, stats, sb, ship, aliens, bullets, bossalien, bossbullet): + """ + 检查是否有外星人位于屏幕边缘,并更新整群外星人的位置 + """ + # 增加:在非BOSS关卡时检查 + if stats.level != stats.bosslevel: + check_fleet_edges(ai_settings, aliens) + aliens.update() + + # 检查是否有外星人到达屏幕底端 + check_aliens_bottom(ai_settings, screen, stats, sb, ship, aliens, bullets) + + # 检测外星人和飞船之间的碰撞 + if pygame.sprite.spritecollideany(ship, aliens): + ship_hit(ai_settings, screen, stats, sb, ship, aliens, bullets, bossalien, bossbullet) + + else: + check_bossalien_edges(ai_settings, bossalien) + bossalien.update()