我正在制作一个游戏,我试图通过每十秒加速你的敌人来使游戏更加难以实现
这是我尝试的方法:
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
答案 0 :(得分:3)
Python 2.x自启动以来没有可靠的方法来计算秒数。
time.clock()
非常错误 - 在除Windows之外的任何平台上,它都会计算CPU时间而不是挂钟时间。
time.time()
更接近,因为它是每个平台上的挂钟。它不能保证具有亚秒级精度,但是当您每10秒检查一次时,这没有问题。 的一个问题是它没有很好地处理对系统时钟的更改。例如,如果您将时钟设置为一小时,则计时器不会激发3610秒而不是10秒。
幸运的是,PyGame
有pygame.time
模块,其功能专门用于处理此类案例。
最简单的方法是使用pygame.game.set_timer
。而不是检查每一帧或每个空闲滴答或其他什么时间,只需添加一个事件处理程序并让PyGame每10秒触发一次该事件。
如果这不合适,pygame.time.get_ticks
会给你自游戏开始以来的挂钟时间毫秒数,这可能是你想要与Elazar一起使用的时间。代码。
但在决定你想做什么之前,还是值得阅读链接页面和一些例子。
答案 1 :(得分:2)
:__init__
self.i = 0
答案 2 :(得分:2)
您想使用模数运算符:
if (self.time_passed - self.start_time) % 10 == 0:
...