微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保仅在上一个命令完全执行后才调用 time.sleep()?

如何解决如何确保仅在上一个命令完全执行后才调用 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 举报,一经查实,本站将立刻删除。