2017-06-17 93 views
-2

我一直在做一個遊戲;其中一個主要組件是一個倒數計時器 - 但是這個計時器被延遲了,我無法推斷出原因。我希望它每秒減少一次,但是它似乎每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