繁体   English   中英

Python:睡眠方法

[英]Python: Sleep methods

我知道这个论坛在技术上已经“提出了”,但是这个问题是基于一个我找不到的不同概念。

在使用time.sleep(无论如何)时,它显然会休眠,我明白了,但是在使用Pygame时,它将锁定程序。 除了不锁定pygame的输入外,是否有任何真正的方法在代码中使用睡眠或暂停? 我试过了;

time.sleep
pygame.wait and
pygame.delay

这些都做完全相同的事情。 我正在为计算机科学课开发一款游戏,该游戏涉及一张由我拥有的13张照片组成的小动画,但是略有不同,但是当间隔播放0.12秒时,它看起来就不错了,可惜整个窗口被冻结了语句使它跳过并看起来非常糟糕。

多亏有谁能弄清楚这个谜。

我认为您可能想尝试使用此处显示的方法。

我的意思是一个例子:

class Unit():
    def __init__(self):
        self.last = pygame.time.get_ticks()
        self.cooldown = 300    

    def fire(self):
        # fire gun, only if cooldown has been 0.3 seconds since last
        now = pygame.time.get_ticks()
        if now - self.last >= self.cooldown:
            self.last = now
            spawn_bullet()

注意,他使用pygame.time.get_ticks()检查变量是否小于该变量,如果小于,则传递if语句并生成项目符号。

下面是查看此概念的一种更简单的方法

curtime = pygame.time.get_ticks() + 10  # the 10 is what we add to make it sleep

while True:  # Create a loop that checks its value each step
    if curtime < pygame.time.get_ticks():  # check if curtime is less than get_ticks()
        print("Sleep is over now!")
        break  # exit the loop

我希望它能以任何方式对您有所帮助,这似乎是一个可行的选择,因为当您使用常规功能时,它会一直冻结。

还有一件事

请注意pygame.time.get_ticks()会以毫秒为单位提供当前时间,有关完整文档,请访问此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM