如何解决如何确保仅在上一个命令完全执行后才调用 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
为真,等待 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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。