2016-05-14 3 views
1

Я думал в pygame, как я могу контролировать время. А именно, когда if-statement имеет значение True, я хочу его 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

Смежные вопросы