我正在尝试使用pygame在python中创建一个简单的2D游戏。这个游戏是外星人入侵的残余,在外星人入侵到屏幕底部之前射击外星人。游戏编译并运行,但我遇到的问题是关于子弹。他们没有穿越屏幕。在我添加代码以使外星人移动之后问题就开始了。我试着调整子弹的速度但是没有用。下面是我使用我正在使用的所有模块的要点的链接。关于如何让子弹移动的任何想法?
https://gist.github.com/dewest91/1d5d5ee538a4f68bfacc84c4081c24f8
答案 0 :(得分:1)
这是因为您实际上从未实际调用update
对象的Bullet
方法。
我怀疑你想在update_bullets
函数中执行此操作,所以这里是修复。
def update_bullets(aliens, bullets):
"""Update position of bullets and get rid of old bullets."""
#Check for any bullets that have hit aliens.
#If so, get rid of the bullet and the alien.
collisions = pygame.sprite.groupcollide(bullets, aliens, False, True)
#Get rid of bullets that have disappeared.
for bullet in bullets.copy():
bullet.update()
if bullet.rect.bottom <= 0:
bullets.remove(bullet)
print(len(bullets))
我建议将for bullet in bullets.copy()
更改为for bullet in bullets
。因为它的复制方法不会改变任何东西!如果您不相信我在更改之前和之后添加print(bullets)
:您会发现在此上下文.copy()
只是浪费时间,内存并且编码形式不好。