我试图为单词记忆游戏实现游戏计时器。游戏有一个开始屏幕,所以时间应该从用户按下"播放"时暂停,当用户按下"暂停"时暂停。游戏中期,当用户按下"继续"在暂停屏幕上。 我知道正确实现这个应该是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
答案 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