函数pygame.sprite.groupcollapse()已经杀死了一个组中的所有精灵



我从一本名为";python速成课程";。这个游戏是关于一艘向外星人开火的船。我一直在尝试实现一个功能来检测组中任何子弹精灵和任何外星精灵之间的碰撞。问题是,当检测到碰撞时,它会杀死被击中的精灵,所有其他外星人在之后消失

功能:

def _check_bullet_alien_collision(self):
"""Check for any bullets that have hit aliens.
If so, get rid of the bullet and the alien."""
collisions = pygame.sprite.groupcollide(
self.bullets, self.aliens, True, True)

我把字典"打印出来";碰撞";为了显示发生了什么,这就是结果:

<项目符号精灵(在0组中(>[<外星精灵(0组(>]

我还试图循环遍历精灵,并使用另一个函数传递一个精灵作为参数,我忘记了它的名称,但没有成功。

以下是项目:https://github.com/thiagorizzi/Alien-Invasion

这些年来我已经见过几次了。_change_fleet_direction()中实际改变舰队方向的线不应该是放下外星人的循环的一部分;请看这里。

缩进问题使这种行为变得有趣。当有奇数个外星人时,舰队的方向会翻转奇数次,因此该方法以改变舰队的方向结束,这是你想要的。当有偶数个外星人时,舰队的方向会翻转偶数次,这不会导致舰队的方向发生净变化。当这种情况发生时,舰队就会不断下降并离开屏幕。

它可能是一个很难追踪的bug。

相关内容

最新更新