[英]How to use time.sleep in pygame?
所以我试图显示一个图像,等待 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 的pygame.time.wait()
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.image
和Time.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?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.