我正在尝试使用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()
答案 0 :(得分:1)
time.clock()
的行为取决于平台:
time.clock()
在Unix上,以秒为单位返回当前处理器时间,以浮点数表示。精度,实际上 “处理器时间”含义的确切定义取决于 相同名称的C函数。在Windows上,此函数返回自 第一次调用此函数,作为浮点数,基于 Win32函数QueryPerformanceCounter()。分辨率通常是 优于一微秒。
从版本3.3开始不推荐使用:此功能的行为取决于 在平台上:改用perf_counter()或process_time(), 根据您的要求,具有明确的行为。
因此,在这里使用它确实是错误的工具。使用time.time()
或pygame的时钟或它的内置事件系统。您会发现很多示例,例如here或here。