我想在pygame中制作一个“太空入侵者”游戏......我已经有很多游戏已经运行,但是我遇到了烦人的问题我无法解决自己(这是我采取的第一个编程课程)。这是有问题的代码:“for”循环在python-pygame中不会在“if”语句下中断
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()
那么这按理说应该做的是:在一个名为列表
- 检查为每个项目的“敌人”(在那里我有附加我所有的敌人实例)
- 如果它与英雄精灵碰撞,或者如果他们已经达到了屏幕
- 的底部,然后从播放器中取出一个生命,初始化游戏(重拍敌人名单,复位位置)
- 和Br挤压“for”循环。
- 否则,移动敌人并像往常一样将它们击倒。
但是,这样做实际上是将玩家的所有生命从接触中移除。难道它不应该停止计算,因为我休息了?我认为如果任何敌人达到了400px,那么它会继续计算,从而不断从我的玩家那里夺走生命。
这是我initgame功能如预期
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()
你确定你在'initgame()'中正确地重置敌人位置吗?我怀疑你的错误在那里。 – devsnd 2012-04-11 14:54:38
请检查我的initgame的原始问题。 – mechanicarts 2012-04-11 14:57:19