2015-06-08 12 views
5

Ich begann mit Pygame und ich möchte einfaches Spiel zu tun. Eines der Elemente, die ich brauche, ist der Countdown-Timer. Wie kann ich die Countdown-Zeit (zB 10 Sekunden) in PyGame einstellen?Countdown-Timer in Pygame

Antwort

3

Auf dieser Seite finden Sie, was Sie suchen http://www.pygame.org/docs/ref/time.html#pygame.time.get_ticks
Sie laden Zecken einmal, bevor der Countdown beginnen (die ein Trigger im Spiel sein kann - das wichtigste Ereignis, was auch immer). Zum Beispiel:

start_ticks=pygame.time.get_ticks() #starter tick 
while mainloop: # mainloop 
    seconds=(pygame.time.get_ticks()-start_ticks)/1000 #calculate how many seconds 
    if seconds>10: # if more than 10 seconds close the game 
     break 
    print (seconds) #print how many seconds 
0

Es gibt mehrere Möglichkeiten, wie Sie this- hier tun kann man ist. Python hat keinen Mechanismus für Interrupts, soweit ich weiß.

import time, datetime 

timer_stop = diatomite.datetime.utcnow() +datetime.timedelta(seconds=10) 
while True: 
    if datetime.datetime.utcnow() > timer_stop: 
     print "timer complete" 
     break 
3

Ein weiterer einfacher Weg ist einfach das Ereignissystem von pygame zu verwenden.

Hier ist ein einfaches Beispiel:

import pygame 
pygame.init() 
screen = pygame.display.set_mode((128, 128)) 
clock = pygame.time.Clock() 

counter, text = 10, '10'.rjust(3) 
pygame.time.set_timer(pygame.USEREVENT, 1000) 
font = pygame.font.SysFont('Consolas', 30) 

while True: 
    for e in pygame.event.get(): 
     if e.type == pygame.USEREVENT: 
      counter -= 1 
      text = str(counter).rjust(3) if counter > 0 else 'boom!' 
     if e.type == pygame.QUIT: break 
    else: 
     screen.fill((255, 255, 255)) 
     screen.blit(font.render(text, True, (0, 0, 0)), (32, 48)) 
     pygame.display.flip() 
     clock.tick(60) 
     continue 
    break 

enter image description here

-2

Das ist eigentlich ganz einfach. Danke Pygame für die Erstellung einer einfachen Bibliothek!

import pygame 
x=0 
while x < 10: 
    x+=1 
    pygame.time.delay(1000) 

Das ist alles, was dazu gehört! Viel Spaß mit Pygame!

+3

Verzögerung wird nicht für bestimmte Szenarien funktionieren, da es ein bestimmtes Objekt nicht verzögert, sondern das gesamte Spiel. –

1

pygame.time.Clock.tick gibt die Zeit in Millisekunden seit dem letzten Aufruf clock.tick (delta time, dt), so können Sie es eine Zeitvariable zu erhöhen oder verringern verwenden.

import pygame as pg 


def main(): 
    pg.init() 
    screen = pg.display.set_mode((640, 480)) 
    font = pg.font.Font(None, 40) 
    gray = pg.Color('gray19') 
    blue = pg.Color('dodgerblue') 
    # The clock is used to limit the frame rate 
    # and returns the time since last tick. 
    clock = pg.time.Clock() 
    timer = 10 # Decrease this to count down. 
    dt = 0 # Delta time (time since last tick). 

    done = False 
    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 

     timer -= dt 
     if timer <= 0: 
      timer = 10 # Reset it to 10 or do something else. 

     screen.fill(gray) 
     txt = font.render(str(round(timer, 2)), True, blue) 
     screen.blit(txt, (70, 70)) 
     pg.display.flip() 
     dt = clock.tick(30)/1000 #/1000 to convert to seconds. 


if __name__ == '__main__': 
    main() 
    pg.quit() 
-1

Versuchen Sie folgendes:

import time 
counter = 10 

while counter != 0: 
    print(counter) 
    counter -= 1 
    time.sleep(1) 

Diese im Grunde eine Variable hat, dass 1 von jeder Zeit abgezogen wird es Schleifen. Dann verwenden wir time.sleep (1), um eine Sekunde zu warten.

+2

'time.sleep' ist normalerweise keine gute Lösung, da das Spiel nicht mehr reagiert und die Ausführung von anderem Code blockiert. – skrx