如何确保只有在前一个命令完全执行后才能调用time.sleep()



我正在使用pygame,我想显示"游戏结束";消息。为此,我想使用time.sleep((这样的函数:

message('Game Over', red)
pygame.display.update()
time.sleep(3)

然而,time.sleep((似乎延迟了pygame.display.update((的执行,基本上,消息出现在延迟之后,而不是之前。如何确保只有在前一个函数完全执行后才能调用time.sleep((?提前谢谢。

通常,您希望避免在pygame或内部循环中使用time.sleep()。一种解决方法是使用datetime模块。

下面的代码将运行doSomething(),在变量GameOver为true后等待3秒钟,并在3秒钟后再次开始运行doSomething(),同时更新屏幕,以便您可以在3秒钟内绘制并运行doOtherStuff()

d = datetime.now()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

if not GameOver:
d = datetime.now()
# your main code will go here
doSomething()

# wait 3 seconds when GameOver is True
if GameOver and (datetime.now() - d).total_seconds() >= 3:
GameOver = False
# you can put anything else you want to run at the end of the 3 seconds here

# do other stuff even while waiting
doOtherStuff()
pygame.display.update()

最新更新