为什么我的子弹不能在我的pygame程序中旅行?

时间:2017-03-22 15:01:09

标签: python pygame

我正在尝试使用pygame在python中创建一个简单的2D游戏。这个游戏是外星人入侵的残余,在外星人入侵到屏幕底部之前射击外星人。游戏编译并运行,但我遇到的问题是关于子弹。他们没有穿越屏幕。在我添加代码以使外星人移动之后问题就开始了。我试着调整子弹的速度但是没有用。下面是我使用我正在使用的所有模块的要点的链接。关于如何让子弹移动的任何想法?

https://gist.github.com/dewest91/1d5d5ee538a4f68bfacc84c4081c24f8

1 个答案:

答案 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()只是浪费时间,内存并且编码形式不好。