pygame中的游戏计时器

时间:2016-10-05 20:33:34

标签: python timer pygame

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

以下是我的实施。它开始在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

1 个答案:

答案 0 :(得分:2)

创建自己的计时器类。使用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