2016-05-14 154 views
1

我一直在pygame中思考如何控制时间。 也就是说,当if语句为True时,我只需要几秒钟就可以得到它, 哪一个是最好的pygame.time对象? 例Pygame时间控制

if p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560: 
      self.kill() 

      p.image.fill(red) 

这是一个球反弹碰撞,每当这种说法是真的,我希望它留真只是时间量。我怎样才能做到这一点? :D

回答

1

您是否尝试过使用函数pygame.time.get_ticks()

pygame.time.get_ticks()输出当前滴答号,滴答以毫秒为单位表示。

它这样使用:

begin = pygame.time.get_ticks() 

while pygame_loop: 
    time_now = pygame.time.get_ticks() 

    if time_now-begin > 1000: 
     begin=pygame.time.get_ticks() 
     statement = True 

,你的代码看起来就像这样:

timeout = 1000 
last_true = -timeout 

if (p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560): 
    last_true = pygame.time.get_ticks() 

if pygame.time.get_ticks() < last_true + timeout: 
    self.kill() 
    p.image.fill(red) 
+0

如果我没心没肺,我会为此感到害怕 –

1

给这个镜头。它不是简单地检查您的陈述是否评估为True,而是检查它是否在您指定的最后一段时间内评估为True。请参阅Time.time()

import time 

%this is the time in seconds you wish the loop to be treated as true 
timeout = 1.0 
last_true = -timeout 

if (p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560): 
    last_true = time.time() 

if time.time() < last_true + timeout: 
    self.kill() 
    p.image.fill(red) 
+0

你不应该用时间来算的pygame的秒,但'pygame.time' – Veltro

+0

@Liam如果你打算发表评论,你会介意解释为什么吗? – CorbinMc

+0

pygame游戏可能会滞后,无法遵循系统时间,而time.time'秒会在游戏中不准确。 'pygame.time'更准确。 – Veltro