Pygame time.clock()怪异行为

时间:2018-11-04 14:36:36

标签: python time pygame

我正在尝试使用pygame创建一个简单的游戏,到目前为止一切正常。尽管最近几天我意识到time.clock()出现问题。我阅读了文档,该功能应该计算游戏开始以来的时间。我想每8秒生成一个外星人组,它可以工作(我正在使用debian os),但是正如我提到的过去两天,它不能正确计数。系统需要大约20秒的实时时间才能使time.clock打印8.0,并产生外星人,起初我以为我弄乱了计数器,但是怎么回事呢,它在一开始就很好用,所以我尝试在Windows分区上运行相同的代码,也很好。那么这是系统时钟还是其他问题?我用time.time替换了debian上的time.clock,并且运行良好。过去有人遇到过同样的问题吗?您能帮我检查是否还有其他问题吗(两个操作系统都运行python 3.6)?如果您听不懂或需要更多,请问我。

谢谢您的时间

这是游戏中time.clock使用的一部分:

sergeant_spawn_time_limit = 8.0
sergeant_spawn_time = 0.0
if game_stage == 2 or game_stage == 3 or score >= 400:
    if time.clock() - sergeant_spawn_time > sergeant_spawn_time_limit:
        for spawn_sergeant in range(5):
            sergeant = AlienSergeant(display_width, display_height, 50, 88)
            all_sprites_list.add(sergeant)
            alien_sergeant_list.add(sergeant)
        sergeant_spawn_time = time.clock()

1 个答案:

答案 0 :(得分:1)

time.clock()的行为取决于平台:

  

time.clock()
  在Unix上,以秒为单位返回当前处理器时间,以浮点数表示。精度,实际上   “处理器时间”含义的确切定义取决于   相同名称的C函数。

     

在Windows上,此函数返回自   第一次调用此函数,作为浮点数,基于   Win32函数QueryPerformanceCounter()。分辨率通常是   优于一微秒。

     

从版本3.3开始不推荐使用:此功能的行为取决于   在平台上:改用perf_counter()或process_time(),   根据您的要求,具有明确的行为。

因此,在这里使用它确实是错误的工具。使用time.time()或pygame的时钟或它的内置事件系统。您会发现很多示例,例如herehere