定时Sprites的运动

时间:2013-07-08 01:23:05

标签: python pygame sprite livewires

我正在制作气球流行型游戏,其中玩家有一个发射器,他们可以在屏幕上移动并按下鼠标左键来发射导弹并弹出气球。我想要做的是,在发射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。

1 个答案:

答案 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