2017-06-17 8 views
-2

私はゲームに取り組んできました。主なコンポーネントの1つがカウントダウンタイマーですが、このタイマーは遅れてしまい、理由を推測できません。私はそれを1秒に1回減少させたいと思いますが、6秒に一度減っているようです。ここでカウントダウンタイマーは遅れて減少しますか?

は私が設定タイマーを持っているかである:

loops = 0 
minute = 1 
tens = 0 
ones = 0 

#Timer Calculation 
    screen.blit(cloudSky, (0,0)) 
    if go == True: 
     loops = loops + 1 
     if (loops % 60)== 0: 
      if ones == 0 and tens == 0 and minute != 0: 
       tens = 6 
       ones = 0 
       minute = minute - 1 

      if ones == 0 and tens != 0: 
       ones = 9 
       tens = tens - 1 

      elif ones != 0: 
       ones = ones - 1 

      elif tens == 0 and ones == 0: 
       tens = 5 
       minute = minute - 1 

      elif ones == 0 and tens != 0: 
       tens = tens - 1 


      if minute <= 0 and tens == 0 and ones == 0: 
       go = False 

私は以下のコードを画面に出力します。すべてのヘルプは大歓迎です

#Draw Clock Time 
time = timeFont.render(str (minute)+ ":" + str (tens) + str (ones), True, WHITE) 
screen.blit(time, (750,10)) 

答えて

0

これは、このタイマー計算を正確に60回/秒実行することに依存している可能性があります。毎秒10回更新すると、リアルタイムの6秒ごとに1秒が追加されます。おそらく、より正確に時間を計るために、timeモジュールのようなものを使うべきでしょう。それはタプルという名前ですので

import time 

# To remember current time 
timer = time.time() # timer = 1497737106.913825 

# To read time since the clock started 
seconds_passed = time.time() - timer # seconds_passed = 11.117798089981079 

# To get a tuple containing calculated time (minutes, seconds, etc.) 
time_passed = time.gmtime(seconds_passed) 
# time_passed = time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, 
#    tm_hour=0, tm_min=0, tm_sec=11, tm_wday=3, tm_yday=1, tm_isdst=0) 
# As you can see year returned is 1970 because 0 means start of Unix Epoch time 
# but you don't use it anyway 

、あなたが使用できるインデックス:

time_passed[0] # 1970 

や名前:

time_passed.tm_year # 1970 

https://docs.python.org/3/library/time.html#time.time

関連する問題