问题描述
我正在使用 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
为真,等待 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()