2016-05-14 20 views
1

Ich habe in Pygame gedacht, wie kann ich die Zeit kontrollieren. Wenn nämlich eine if-Anweisung True ist, möchte ich nur für einige Sekunden True, Welches ist das beste pygame.time-Objekt? BeispielPygame Zeitsteuerung

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

      p.image.fill(red) 

Dies ist ein Ball Bounce-Kollision und wann immer diese Aussage wahr ist, ich will es nur für einen Betrag von Zeit treu bleiben. Wie kann ich das machen? : D

Antwort

1

haben Sie versucht, die Funktion pygame.time.get_ticks() mit?

pygame.time.get_ticks() gibt die aktuelle Tick-Nummer aus, ein Tick wird in Millisekunden dargestellt.

wird wie folgt verwendet:

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 

und Ihr Code wird wie folgt aussehen:

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

Ich würde -1 für das Stoßen, wenn ich herzlos wäre –

1

Geben Sie eine Einstellung. Anstatt einfach zu überprüfen, ob Ihre Anweisung auf True auswertet, wird überprüft, ob sie innerhalb der letzten von Ihnen angegebenen Zeitspanne auf True ausgewertet wurde. Siehe 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

Sie sollten nicht die Zeit nutzen, um Sekunden in pygame zu zählen aber 'pygame.time' – Veltro

+0

@Liam Wenn Sie diesen Kommentar hinterlassen, würde es Ihnen etwas ausmachen zu erklären, warum? – CorbinMc

+0

Ein Pygame-Spiel kann nacheilen und konnte der Systemzeit nicht folgen und eine "time.time" Sekunde kann im Spiel ungenau sein. 'pygame.time' ist genauer. – Veltro