我正在编写pygame中的塔防计划。我产生新浪的代码不起作用
这里是我的程序代码除外。第一个区块处理射击+敌方碰撞,第二个处理与我的敌方碰撞,第三个处理实际产生新的波浪。目前,初始波浪大小产生10个敌人,并且游戏循环在第一次波后不会产生新的敌人。我正在编写pygame中的塔防计划。我产生新浪的代码不起作用
# baddie and shot collision removed = False
for a in baddies[:]:
for b in shots[:]:
if a.imgRect.colliderect(b.imgRect):
shots.remove(b)
a.toughness -= 1
if a.toughness < 1:
baddies.remove(a)
removed = True
print str(wavesize)
break
# baddie and mine collision
removed = False
for a in baddies[:]:
for b in mines[:]:
if a.imgRect.colliderect(b.imgRect):
mines.remove(b)
a.toughness -= 1
if a.toughness < 1:
baddies.remove(a)
removed = True
break
if removed:
wavesize -= 1
if wavesize < 1:
loopcount += 1
wavesize = 10+(loopcount*5)
baddies = createNewWave(wavesize)
回答:
你只有一个每次通过循环运行,并删除一个坏人时间减少wavesize
,但你很可能也是在同一时间内删除多个坏人。另外,你在第一组循环之后重置你的removed
变量,所以如果它们被镜头摧毁,你可能会失去坏人。你应该做的是跟踪你消除了多少坏人,然后减少那么多的波浪大小。
removed = 0 for a in baddies[:]:
for b in shots[:]:
...
baddies.remove(a)
removed += 1
for a in baddies[:]:
for b in mines[:]:
...
baddies.remove(a)
removed += 1
wavesize -= removed
if wavesize < 1:
loopcount += 1
wavesize = 10+(loopcount*5)
baddies = createNewWave(wavesize)
以上是 我正在编写pygame中的塔防计划。我产生新浪的代码不起作用 的全部内容, 来源链接: utcz.com/qa/266685.html