存储项目的大部分函数

This commit is contained in:
206530219 2021-06-19 11:46:47 +08:00
parent dd068ae818
commit 9757093adf
1 changed files with 34 additions and 1 deletions

View File

@ -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)
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