Pygame时间控制

时间:2016-05-14 07:08:58

标签: python time pygame

我一直在想pygame如何控制时间。 也就是说,当一个if语句为True时,我希望它只是几秒钟, 哪个是最好用的pygame.time-object? 实施例

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

            p.image.fill(red)

这是一个球弹跳碰撞,每当这个声明为真时,我希望它只保留一段时间。我怎样才能做到这一点? :d

2 个答案:

答案 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)

答案 1 :(得分: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)