我正在尝试在 pygame 中制作“太空入侵者”游戏……我已经运行了很多游戏,但是我遇到了一个我无法自己解决的烦人问题(这是我学习的第一门编程课程)。这是有问题的代码:
for enemy in enemies:
if hero.sprite.rect.colliderect(enemy.sprite.rect) or enemy.posy>400:
hero.health-=1
initgame()
break
else:
enemy.moveBy(enemyPos, ENEMYVERT)
enemy.draw()
所以这应该做的是:
- 检查名为“enemies”的列表中的每个项目(我在其中附加了所有敌人实例)
- 如果它与英雄精灵碰撞或者他们已经到达屏幕底部
- 然后从玩家身上移除一条生命,初始化游戏(重新制作敌人列表,重置位置)
- 并打破“for”循环。
- 否则,像往常一样移动敌人并攻击他们。
然而,这实际上是从接触到的玩家身上移除所有生命。自从我使用休息后,它不应该停止计算吗?我认为它会一直计算敌人中是否有任何达到 400 像素,从而不断从我的玩家身上移除生命。
这是我的初始化游戏功能
def initgame():
enemies=[]
createEnemies("1.png", 50, 250)
createEnemies("2.png", 50, 190)
createEnemies("3.png", 50, 130)
createEnemies("4.png", 50, 70)
createEnemies("5.png", 50, 10)
enemyPos=0
enemyDir=-1
hero.score=0
restartFlag=False
for enemy in enemies:
enemy.draw()