【发布时间】:2021-12-06 14:15:06
【问题描述】:
我是 python 和一般编程的新手,我正在为一个以 python 为中心的类做一个最终项目。我似乎无法弄清楚如何进行工作的要求之一是将递归集成到我们的代码中以显示工作知识。我使用 pygame 制作了一个简单的“子弹地狱”风格游戏。
我的目标是,当子弹与敌人接触时,会从玩家位置发射一系列子弹,作为一种短期修饰符。
每当子弹击中敌人时,这段代码就会在主循环中运行:
for i in reversed(range(len(bullets))):
for j in reversed(range(len(enemies))):
if bullets[i].collided(enemies[j].rect):
del enemies[j]
del bullets[I]
s.global_score += 100
more_bullets(10)
#print("Hit!")
#print(s.global_score)
break
“more_bullets”函数是我递归的重点,并称之为:
def more_bullets(n):
if(n > 0):
spawnx = sq.rect.x+10 + sq.rect.width/2 - 10
b = Square(s.red, spawnx,sq.rect.y, 10,30)
b.direction = 'N'
b.player_speed = 10
bullets.append(b)
spawnx = sq.rect.x-10 + sq.rect.width/2 - 10
b = Square(s.red, spawnx,sq.rect.y, 10,30)
b.direction = 'N'
b.player_speed = 10
bullets.append(b)
pygame.display.update()
more_bullets(n-1)
print(f"Fired x {n}")
目前的结果是我的调试确实打印了 10 次,这让我认为递归运行正常,但是在发生碰撞时只有一组子弹在发射。我在想所有 10 颗子弹的发射速度比我注册它的速度还要快,只是在屏幕上堆积。
是否有一个易于使用的功能可以减慢子弹的发射速度?还是在这里搞砸了一些更根本的事情?
【问题讨论】:
-
你能在每发子弹后强制一个动画刻度吗?
标签: python