在一定时间后更改变量

时间:2013-06-19 23:21:52

标签: python variables time pygame

我正在制作一个游戏,我试图通过每十秒加速你的敌人来使游戏更加难以实现

这是我尝试的方法:

def time_pass(self):
    #timer for main game play
    self.time_passed = time.clock()
    if self.time_passed == (self.start_time + 10):
        self.str_spd1 += 2
        self.str_spd2 += 2
        self.str_spd3 += 2

self.star_time是游戏开始的时间,self.time_passed是自程序启动以来的秒数

所以如果游戏已经运行了十秒钟,那么速度应该会增加2,但只有当时间恰好为10时它才会发生,然后才会回来

如果我使用>代替==这样的游戏就像崩溃一样导致星星加速

所以我需要一种方法来使它每十秒钟的恒星速度增加2

3 个答案:

答案 0 :(得分:3)

Python 2.x自启动以来没有可靠的方法来计算秒数。

time.clock()非常错误 - 在除Windows之外的任何平台上,它都会计算CPU时间而不是挂钟时间。

time.time()更接近,因为它是每个平台上的挂钟。它不能保证具有亚秒级精度,但是当您每10秒检查一次时,这没有问题。 的一个问题是它没有很好地处理对系统时钟的更改。例如,如果您将时钟设置为一小时,则计时器不会激发3610秒而不是10秒。

幸运的是,PyGamepygame.time模块,其功能专门用于处理此类案例。

最简单的方法是使用pygame.game.set_timer。而不是检查每一帧或每个空闲滴答或其他什么时间,只需添加一个事件处理程序并让PyGame每10秒触发一次该事件。

如果这不合适,pygame.time.get_ticks会给你自游戏开始以来的挂钟时间毫秒数,这可能是你想要与Elazar一起使用的时间。代码。

但在决定你想做什么之前,还是值得阅读链接页面和一些例子。

答案 1 :(得分:2)

<{1}}中的

__init__

self.i = 0

答案 2 :(得分:2)

您想使用模数运算符:

if (self.time_passed - self.start_time) % 10 == 0:
    ...