2016-10-05 14 views
0

단어 메모리 게임을위한 게임 타이머를 구현하려고합니다. 게임에는 시작 화면이 있으므로 사용자가 "재생"을 누를 때부터 시간이 계산되어야하며, 사용자가 게임 중간에서 "일시 중지"를 누르면 일시 중지되고 일시 중지 화면에서 "계속"을 누르면 계속됩니다. 나는 fps를 제어하기 위해 이것을 사용하고 있기 때문에 이것의 올바른 구현은 틱의 독립 (ish)이어야한다는 것을 알고 있습니다. 또한 대부분의 예제에서 (USEREVENT + 1, 1000)을 인수로 사용하는 pygame.time.set_times()를 사용하는 것이 좋습니다. USEREVENT 란 무엇입니까? 나는이 기능에 대한 문서를 이해할 수 없다.파이 게임 게임 타이머

다음은 구현 한 것입니다. 타이머()에 대한 함수 호출이 게임 루프에 있지만 일시 중지 할 수는 없지만 Pygame.init()에서 시간 측정을 시작합니다. 내 게임 루프를 호출하지 않습니다. 타이머의 시작/정지 상태를 제어 할 수 있도록하려면 어떻게 다시 씁니까?

감사합니다!

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 

답변

2

고유 한 타이머 클래스를 만듭니다. time.time() (일반 파이썬 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 
+0

고마워요! 이 말이 지금은 ... – Milnik