2015-06-08 17 views
5

Pygame kullanmaya başladım ve basit bir oyun yapmak istiyorum. İhtiyacım olan unsurlardan biri geri sayım sayacı. PyGame'de geri sayım süresini (örn. 10 saniye) nasıl yapabilirim? Bu sayfadaPygame'de geri sayım sayacı

cevap

3

bir zamanlar sayım başlamadan önce indirebilir http://www.pygame.org/docs/ref/time.html#pygame.time.get_ticks
keneler aradığınızı bulacaksınız (oyunda bir tetikleyici olabilir - Anahtar olay, neyse). Örneğin :

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

burada bu- birini bulunuyor yapabileceğiniz birçok yolu vardır. Python'un bildiğim kadarıyla bir müdahale mekanizması yok.

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

Bir başka kolay yol sadece pygame'in etkinlik sistemini kullanmaktır.

İşte basit bir örnek:

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

Bu aslında oldukça basit. Basit bir kütüphane oluşturduğunuz için teşekkürler!

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

Buradaki her şey bu kadar! Pygame ile eğlenin!

+3

Gecikme, belirli bir nesneyi değil, tüm oyunu geciktirdiği için belirli senaryolarda çalışmayacaktır. –

1

pygame.time.Clock.tick son clock.tick çağrı (delta time, dt) beri milisaniye cinsinden döndürür, böylece o artırabilir veya bir zamanlayıcı değişkeni azaltmak için kullanabilirsiniz.

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

bu deneyin: Bu temelde 1 o döngüler her zaman çıkarılır bir değişkeni

import time 
counter = 10 

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

. Sonra bir saniye beklemek için time.sleep (1) kullanırız.

+2

'time.sleep' genellikle iyi bir çözüm değildir çünkü oyun yanıt vermez ve diğer kodların yürütülmesini engeller. – skrx