【问题标题】:Game timer in pygamepygame中的游戏计时器
【发布时间】:2016-10-07 09:08:42
【问题描述】:

我正在尝试为单词记忆游戏实现游戏计时器。游戏有一个开始屏幕,所以时间应该从用户按下“播放”时开始计算,当用户在游戏中按下“暂停”时暂停,当用户在暂停屏幕上按下“继续”时继续。 我知道正确的实现应该与滴答声无关(ish),因为我正在使用它来控制 fps。还建议使用 pygame.time.set_times(),在大多数示例中将 (USEREVENT+1, 1000) 作为参数。什么是用户事件?我无法掌握此功能的文档。

以下是我的实现。它在 pygame.init() 开始测量时间,而不是当我调用我的游戏循环时,尽管 timer() 的函数调用在游戏循环中,并且不能暂停。我如何重写它以便能够控制计时器的启动/停止状态?

谢谢!

def timer():   
    #isOn =True         
    #while isOn:
    second=round((pygame.time.get_ticks())/1000)
    minute=0
    hour=0    

    minute, second=divmod(second, 60)
    hour, minute=divmod(minute, 60)
    #text=smallfont.render("Elapsed time: "+str(getSeconds), True, WHITE)       
    text=smallfont.render("Elapsed time: "+str("%d" %hour + " : "+"%d" %minute + " : "+"%d" %second), True, WHITE) 
    gameDisplay.blit(text, [0+MARGIN,350])
    return time

【问题讨论】:

    标签: python timer pygame


    【解决方案1】:

    创建您自己的计时器类。使用time.time()(来自常规python time 模块)。

    import time
    
    class MyTimer:
        def __init__(self):
            self.elapsed = 0.0
            self.running = False
            self.last_start_time = None
    
        def start(self):
            if not self.running:
                self.running = True
                self.last_start_time = time.time()
    
        def pause(self):
            if self.running:
                self.running = False
                self.elapsed += time.time() - self.last_start_time
    
        def get_elapsed(self):
            elapsed = self.elapsed
            if self.running:
                elapsed += time.time() - self.last_start_time
            return elapsed
    

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2017-07-10
      • 2019-09-09
      相关资源
      最近更新 更多