2013-10-29 84 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只是解决它的一种方法。 –