2013-10-29 132 views
1

我在python/pygame中編程的遊戲中有一個計時器。減少在python中的時間

定時器工作正常,當我在主類的一切:

time=50 

seconds_passed = clock.tick()/1000.0 
time-=seconds 
draw_time=math.tranc(time) 
print(draw_time) 

然而,當我移動到一個新的類球員

class player(): 
    . 
    . 
    . 
    set_time(self, draw_time): 
     seconds_passed = clock.tick()/1000.0 
     time-=seconds_passed 
     draw_time=math.tranc(time) 
     print(draw_time) 

這個當我調用主類此功能:

class main(): 
    . 
    . 
    . 
    draw_time=20 
    player = Player() 
    print player.set_time(draw_time) 

我的時間不是遞減,而是保持不變!

有什麼建議嗎?

+0

的可能重複[爲什麼能在蟒紋變量函數在封閉的範圍,但在分配不能使用它們?(http://stackoverflow.com/questions/18864041/why-can-functions-in-python -print-variables-in-enclosing-scope-but-can-use-th) – fjarri

+0

什麼是'seconds',它與'seconds_passed'的關係是什麼? – tripleee

+0

對不起的錯字,固定編輯 –

回答

0

當您在您的方法中遞減time時,您只修改該值的副本。爲了能夠修改它,你可以傳遞一個對象的引用。您可以使用例如timedelta

from datetime import timedelta 

class player(): 
    set_time(self, draw_time): 
     seconds_passed = clock.tick()/1000.0 
     time -= timedelta(seconds=seconds_passed) 
     draw_time=math.tranc(time.seconds) 
     print(draw_time) 

class main(): 
    draw_time = timedelta(seconds=20) 
    player = Player() 
    print player.set_time(draw_time) 
+0

對不起,我不想要一個時間,我的意思是一個計時器減少 –

+0

當然,你可以創建一個Timer類來代替它,你可以用它來記錄時間。 timedelta只是解決它的一種方法。 –