首页 > 解决方案 > Pygame 移动多个精灵未按预期工作

问题描述

我在 pygame 中制作太空入侵者,我对 python 比较陌生,这是我在 pygame 中的第一个项目。我试图让我的外星人在到达屏幕两侧的边缘时向下移动。但是,它并没有像预期的那样工作。我正在添加一个指向 GitHub 页面的链接,以便任何愿意提供帮助的人都可以查看我的代码。

基本上发生的事情是我将外星人设置为在接触侧面时向下移动 1 个像素,因为当有很多外星人时,这会将它们向下移动很多。显然,随着外星人开始被杀死,他们向下移动的次数减少了。然而,这并不是奇怪的部分。奇怪的是,有时它们会在一侧向下移动 1 px,但在另一侧会向下移动很多。我不太确定我做错了什么。

https://github.com/Kris-Stoltz/space_invaders

标签: pythonpygame

解决方案


添加 break 语句,这样您就不会多次调用 update (如果偶数个外星人撞墙,您最终会朝同一个方向行进!)您还必须增加 update 中的 y 前进:

for alien in aliens:
    if alien.rect.right >= WIDTH:
        aliens.update()
        break
    elif alien.rect.left <= 0:
        aliens.update()
        break

和:

def update(self):
    self.direction *= -1
    self.rect.y += 10

代码看起来很酷!


推荐阅读