如何在pygame中使用time.sleep?

时间:2015-11-26 07:23:07

标签: python time pygame

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

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

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

1 个答案:

答案 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.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?