python - 我创建了一个有多个敌人的游戏 space invaders

标签 python python-3.x pygame

我想创建 1 个额外的敌人。我在遍历列表时遇到了问题。但是我在执行此操作时不断收到此错误:

   enemyX[i] += enemyX_change[i]
   IndexError: list index out of range

这是我的代码:

num_of_enemies = 10
number = 1 
enemyX = []
enemyX_change = []
for i in range(num_of_enemies):
        enemyX.append(i)
        enemyX_change.append(3)

print(len(enemyX))
print(len(enemyX_change))
num_of_enemies += number
for i in range(num_of_enemies):
        enemyX[i] += enemyX_change[i]

最佳答案

我不确定我是否完全理解您的代码。
但是,您永远不会将元素append 元素添加到您的enemyY 列表中,但是您的num_of_enemies 会不断增加。
因此,因为在时间为零时,len(enemyY) = num_of_enemies,您只需向 num_of_enemies 添加一个(在第一次碰撞发生后执行),以查看 enemyY[len(enemyY)]...显然这超出了范围。

如果您的敌人数量保持不变,请考虑删除变量 num_of_enemies(或让它成为常量)。
如果您的敌人数量发生变化,请不要忘记将 append/pop 元素添加到您的列表中。

这是否清楚或有帮助?

关于python - 我创建了一个有多个敌人的游戏 space invaders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62992845/

相关文章:

python - 尝试在游戏循环中运行一个函数,然后退出该函数并运行一个单独的函数

python - “ObjectId”对象没有属性 'getTimeStamp'

python - 从 Python 中的包装函数获取上下文对象

python - 使用 python 更改特定 pandas 数据框列中的行值

python - MongoEngine 中如何让引用字段接受多个文档模式?

python - 虹膜上随机均匀分布

python - 使用locate动态实例化类

python - pygame动画 Sprite 表

python-3.x - asyncio 以不同的间隔定期运行两个不同的函数

python-3.x - pygame.collideect() 在这两种情况下的工作方式是否相同?