@websec007
2020-06-22T02:46:52.000000Z
字数 1328
阅读 1289
2020.Python从入门到实践
子弹击中外星人时,我们要马上知道,以便碰撞发生后让外星人立即消失。为此,我们将在“更新子弹”的位置后立即检测碰撞。
+++++++++++++++++ gf.update_bullets() +++++++++++++++++
def update_bullets(aliens, bullets):"""更新子弹的位置,并删除已消失的子弹"""--snip--# 检查是否有子弹击中了外星人# 如果是这样,就删除相应的子弹和外星人collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)
+++++++++++++++++ gf.update_bullets() +++++++++++++++++
def update_bullets(ai_settings, screen, ship, aliens, bullets):--snip--# 检查是否有子弹击中了外星人# 如果是,就删除相应的子弹和外星人collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)❶ if len(aliens) == 0:# 删除现有的子弹,并新建一群外星人❷ bullets.empty()create_fleet(ai_settings, screen, ship, aliens)
+++++++++++++++++ gf.update_bullets() +++++++++++++++++
def update_bullets(ai_settings, screen, ship, aliens, bullets):--snip--# 删除已消失的子弹for bullet in bullets.copy():if bullet.rect.bottom <= 0:bullets.remove(bullet)check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets)
++++++++++++++ gf.check_bullet_alien_collisions() ++++++++++++++
def check_bullet_alien_collisions(ai_settings, screen, ship, aliens, bullets):"""响应子弹和外星人的碰撞"""# 删除发生碰撞的子弹和外星人collisions = pygame.sprite.groupcollide(bullets, aliens, True, True)if len(aliens) == 0:# 删除现有的所有子弹,并创建一个新的外星人群bullets.empty()create_fleet(ai_settings, screen, ship, aliens)
