2017-06-17 1 views
-2

J'ai travaillé sur un jeu; dans lequel l'un des composants principaux est un compte à rebours, mais cette temporisation est retardée et je ne suis pas en mesure de déduire pourquoi. Je voudrais qu'il décrémente une fois par seconde, mais il semble être décrémentant à la fois toutes les 6 secondes.Le compte à rebours décrémente de manière retardée?

Voici comment je la minuterie a mis en place:

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 

j'imprimer sur l'écran avec le code ci-dessous:

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

Toute aide est grandement appréciée!

Répondre

0

Cela peut être dû au fait que vous comptez effectuer ce calcul de minuterie exactement 60 fois/seconde. Si vous le mettez à jour 10 fois/seconde, il ajoutera 1 seconde toutes les 6 secondes de temps réel. Vous devriez probablement utiliser quelque chose comme module time pour le chronométrer plus précisément.

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 

Comme il est nommé tuple, vous pouvez utiliser l'index:

time_passed[0] # 1970 

ou noms:

time_passed.tm_year # 1970 

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