[英]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.