gpt4 book ai didi

python - 如何在pygame中使用time.sleep?

转载 作者:行者123 更新时间:2023-12-02 03:17:38 29 4
gpt4 key购买 nike

所以我尝试显示一个图像,等待 1 秒,然后显示另一个图像。我正在制作一款匹配游戏,因此在我的代码中我试图说,如果两个图像不匹配,我想将图像更改为预设的通用图像。所以我的代码看起来像这样:

if True:
self.content = self.image
time.sleep(1)
self.content = Tile.cover

self.content 是显示内容的变量,self.image 是显示的图像,然后 Tile.cover是覆盖另一幅图像的通用图像。然而,每当我这样做时,代码都会跳过第一行,只是将图像设置为 Tile.cover,为什么?

最佳答案

更新于 2019 年 3 月 18 日

在 Pygame 中,你必须使用 pygame.time.wait()而不是 python 的 time.sleep()

所需时间以毫秒为单位:

pygame.time.wait(1000)

不使用time.sleep的原因是它会阻塞pygame的事件循环,因此pygame将无法处理其他事件。

<小时/><小时/><小时/>

旧答案

以下是此答案的旧版本,已标记为已接受。它已过时,而且很可能不正确

您所得到的行为是由于 time.sleep()

示例:

我希望您在控制台中尝试以下代码:

>>> import time
>>>
>>> def foo():
print "before sleep"
time.sleep(1)
print "after sleep"
>>>
>>> # Now call foo()
>>> foo()

你观察到输出过程中发生了什么吗?

>>> # Output on calling foo()
... # Pause for 1 second
... 'before sleep'
... 'after sleep'

这也是您的代码所发生的情况。首先它会休眠,然后同时将 self.content 更新为 self.imageTime.cover

修复:

要修复上面示例中的代码,您可以使用sys.stdout.flush()

>>> def foo():
print "before sleep"
sys.stdout.flush()
time.sleep(1)
sys.stdout.flush()
print "after sleep"

>>> foo()
... 'before sleep'
... # pause for 1 second
... 'after sleep'

免责声明:

我还没有在 Pygame 中尝试过 sys.stdout.flush(),所以我不能说它是否适合你,但你可以尝试一下。

对于这个问题似乎有一个有效的解决方案: How to wait some time in pygame?

关于python - 如何在pygame中使用time.sleep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com