我正在编写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

回到顶部