所以我试图显示图像,等待1秒然后显示另一张图像。我正在制作匹配游戏,所以在我的代码中我试图说如果两个图像不匹配,我想将图像更改为预设的通用图像。所以我的代码看起来像这样:
if True:
self.content = self.image
time.sleep(1)
self.content = Tile.cover
self.content
是显示内容的变量,self.image
是显示的图像,然后Tile.cover
是覆盖另一个的通用图像。然而,每当我这样做时,代码会跳过第一行,只是将图像设置为Tile.cover
,为什么?
答案 0 :(得分:0)
您获得的行为取决于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?