我正在制作气球流行型游戏,其中玩家有一个发射器,他们可以在屏幕上移动并按下鼠标左键来发射导弹并弹出气球。我想要做的是,在发射25枚导弹后,使用dy属性向下移动一排气球。除了动作的时机外,我已经完成了所有工作。我唯一能够弄清楚的是,如何让行无限移动,但我无法让它停下来。我只想让它移动一秒钟。我该怎么办呢?顺便说一句,我正在使用pygame,并且如果有帮助的话就会使用livewires。
这是用于在单击鼠标左键时定义导弹发射的模块:
if games.mouse.is_pressed(0):
new_missile = missile(self.left + 6, self.top)
games.screen.add(new_missile)
MISSILE_WAIT = 0 #25
CLICKS += 1
if CLICKS == 25:
a = 0
while a < 10000000:
SPEED = 2
a += 1
此刻,我尝试使用一个巨大的增量计数器,但这只是冻结游戏几秒钟,并没有移动气球。所以我基本上试图找出一种方法告诉python在一段时间内使SPEED等于2。
答案 0 :(得分:0)
问题是当你的while
循环正在运行时,游戏中不会发生任何其他事情。
一种方法是将变量设置为您希望气球移动的秒数。
if CLICKS == 25:
self.balloon_moves = 2.0 # move for 2 seconds
然后从mainloop的某处调用move_balloons
函数/方法,其中变量dt
表示自上一帧以来的时间
def move_baloons(self, dt):
if self.ballon_moves <=0:
return
self.balloon_moves -= dt
for b in self.balloon_list:
b.dy += shiftamount*dt