繁体   English   中英

pygame中的游戏计时器

[英]Game timer in pygame

我正在尝试为文字记忆游戏实现游戏计时器。 游戏具有开始屏幕,因此时间应从用户按下“游戏”时开始计算,从用户在游戏中途按下“暂停”时暂停,并在用户在暂停屏幕中按下“继续”时继续计算。 我了解此的正确实现应独立于刻度线,因为我正在使用它来控制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

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

暂无
暂无

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

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