2016-10-05 1 views
0

私はワードメモリゲーム用のゲームタイマーを実装しようとしています。ゲームには開始画面があるので、ユーザーが「再生」を押したときから計算し、ユーザーがゲームの途中で「一時停止」を押したときに一時停止し、一時停止画面で「続行」を押したときに継続する必要があります。 私はこれを正確に実装することは、fpsを制御するためにそれを使用しているので、ティックの独立したもの(ish)でなければならないことを理解します。また、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 

答えて

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 
+0

ありがとうございます!これは今意味がある... – Milnik