0

我正在使用 pygame 和 livewires 开发 galactica 类型的游戏。然而,在这个游戏中,不是敌人的,而是你射击的气球。每点击 25 次鼠标,我使用设置为 1 的 dy 属性让气球向下移动一行。如果气球到达底部,则游戏结束。但是,我在弄清楚如何让它只运行 1 秒或 2 秒时遇到了一些麻烦。因为我没有办法对结果“计时”,所以 dy 值无限期地设置为 1。因此,在前 25 次点击之后,该行一直向下移动。这没关系,但就像我说的,这不是我想要的结果。

这是我到目前为止的此操作的代码:

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:
            SPEED = 1
            CLICKS = 0

CLICKS 和 MISSILE_WAIT 是在此代码块之前创建并设置为初始值 0 的全局变量。我想弄清楚的是放在 if CLICKS 语句下面的算法。我查看了 time 模块上的 python 文档,但似乎找不到任何适合这个目的的东西。另外,我不认为使用 while 循环在这里会起作用,因为计算机会立即检查这些结果,而我需要一个实际的计时器。

4

1 回答 1

0

我不确定我是否有你的问题,但我可以建议的是:

class Foo():
    def __init__(self):
        self.start_time = time.time()
        self.time_delay = 25 # seconds

    def my_balloon_func(self):
        if(time.time() - self.start_time) > self.time_delay:
            self.start_time = time.time()
        else:
            # do something
于 2013-07-07T20:09:44.087 回答