如何在不冻结整个代码的情况下在 python 中制作计时器

Ven*_*ike 1 python sleep pygame timer

我正在使用 Pygame 编写 Mario 并且我现在正在编写块。我想制作一个计时器,所以当我在一秒后击中方块时,方块会回到其原始位置以制作击球动画。问题是当让计时器带睡眠时,它会在计时器的持续时间内冻结整个游戏。我需要运行代码,并在一秒钟后启动前一个代码块。

我曾尝试使用睡眠来制作计时器,但它冻结了整个游戏。任何人都可以给我一些知识吗?谢谢!

小智 6

from threading import Timer

def timeout():
    # do your stuff here

t = Timer(number_of_seconds, timeout)
t.start()
Run Code Online (Sandbox Code Playgroud)


pro*_*llz 5

我建议你使用threading模块和thread两个函数。

最后,您可以这样格式化:

from threading import Thread
if __name__ == '__main__':
    Thread(target = game()).start()
    Thread(target = timer()).start()
Run Code Online (Sandbox Code Playgroud)

另一个选择是timeit模块。您可以设置一个计时器并使用 if/while 语句检查何时到达某个时间。

第三个选项是使用用于睡眠的时间模块:

import time

max_time = #the time you want
start_time = time.time()
while (time.time() - start_time) < max_time:
    game()
Run Code Online (Sandbox Code Playgroud)