Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Chceli ste niekedy vytvoriť vzrušujúcu hru pomocou knižnice PyGame Pythonu, ale cítili ste sa ohromení konceptom riadenia času? Ak áno, nie ste sami.

Čas je jednou z najdôležitejších súčastí vývoja hier a pochopenie toho, ako čas funguje v PyGame, je nevyhnutné na vytváranie pútavých a úspešných hier. PyGame poskytuje niekoľko užitočných funkcií a modulov, ktoré vám umožňujú kontrolovať čas vo vašich hrách.

Vytvorenie jednoduchej hry

Začnite vytvorením jednoduchej hry, v ktorej sa obdĺžnik pohybuje doprava. Začať, nainštalujte pip do svojho zariadenia a pomocou nižšie uvedeného príkazu nainštalujte modul PyGame:

pip install pygame

Všetky príklady kódu nájdete v tomto Úložisko GitHub.

Po inštalácii importujte modul PyGame. Potom vytvorte obrazovku s veľkosťou 800 x 600 a bielou farbou pozadia a pridajte obdĺžnikový objekt. Kód by mal vyzerať asi takto:

instagram viewer
importovať pygame
pygame.init()
obrazovka = pygame.display.set_mode((800, 600))
pozadie = pygame. Surface (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)

Potom pomocou krátkej slučky udržujte hru spustenú a udržujte obdĺžnikový objekt v pohybe, až kým nedosiahne koniec obrazovky.

beh = Pravda

zatiaľ čo beh:
pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivé

rect.x += 1

ak rect.x > 780:
rect.x = 0

screen.blit (pozadie, (0, 0))
pygame.draw.rect (obrazovka, (0, 0, 0), obdĺžnik)
pygame.display.update()

Môžete tiež pridať používateľské vstupy a kolízie v hre. Nižšie je výstup:

Prehľad časového modulu PyGame

Na ovládanie času v tejto hre môžete použiť pygame.time modul. Tento modul poskytuje rôzne užitočné funkcie, vrátane a Hodiny objekt s metódami ako get_ticks(), počkaj (), a meškanie (). Pomocou týchto funkcií môžete jednoducho ovládať čas v hre.

Vytvorenie objektu hodín na sledovanie času

V PyGame môžete použiť objekt Clock na sledovanie času. Ak chcete vytvoriť hodiny, jednoducho použite nasledujúci riadok kódu:

hodiny = pygame.time. hodiny()

S týmto objektom Hodiny teraz môžete sledovať čas vo svojej hre. S objektom Clock je spojených aj niekoľko ďalších užitočných funkcií, ako napríklad:

  • get_time(): Pomocou tejto funkcie môžete získať čas potrebný pre každú snímku hry. Ak chcete použiť túto funkciu, jednoducho pridajte nasledujúci riadok kódu za cyklus while:
    čas = clock.get_time()
    Pridajte textový objekt na zobrazenie času:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('Čas: {} ms'.format (čas), Pravda, (0, 0, 0))
    screen.blit (text, (0, 0))
  • tik(): Túto funkciu použite na nastavenie snímkovej frekvencie hry. Štandardne je snímková frekvencia nastavená na 60 FPS. Ak ho chcete nastaviť na 30 FPS, jednoducho pridajte nasledujúci riadok kódu:
    clock.tick(30)
  • get_fps(): Aktuálnu snímkovú frekvenciu hry môžete získať pomocou get_fps. Ak chcete použiť túto funkciu, jednoducho pridajte nasledujúci riadok kódu:
    fps = clock.get_fps()
    Na zobrazenie snímkovej frekvencie môžete pridať textový objekt:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('FPS: {}'.formát (fps), Pravda, (0, 0, 0))
    screen.blit (text, (0, 20))
  • tick_busy_loop(): Táto funkcia vám umožňuje vypočítať, koľko milisekúnd uplynulo od posledného volania na tick() funkciu. Ak ho chcete použiť, jednoducho pridajte nasledujúci riadok kódu:
    clock.tick_busy_loop(30)

Získanie času pomocou get_ticks

The get_ticks() funkcia vráti čas v milisekundách od inicializácie PyGame. Ak chcete použiť túto funkciu, pridajte nasledujúci riadok kódu:

time_elapsed = pygame.time.get_ticks()

Pridajte textový objekt na zobrazenie času:

font = pygame.font. SysFont('Arial', 18)
text = font.render('Uplynulý čas: {} ms'.format (time_elapsed), Pravda, (0, 0, 0))
screen.blit (text, (0, 40))

Uplynulý čas môžete použiť na implementáciu herných prvkov založených na čase, ako sú vylepšenia, ktoré trvajú určitý čas. Môžete napríklad implementovať zapnutie, ktoré zvýši rýchlosť obdĺžnikového objektu na 5 sekúnd:

ak time_elapsed / 5000 > 0:
rect.x += 5

Nižšie je výstup:

Pozastavenie hry pomocou funkcií čakania a oneskorenia

PyGame tiež poskytuje dve funkcie, ktoré môžete použiť na pozastavenie hry na určitý čas: počkaj funkcia a meškanie funkciu.

Ak chcete použiť počkaj stačí pridať nasledujúci riadok kódu do cyklu while:

pygame.time.wait(1000)

Tým sa hra pozastaví na 1 000 milisekúnd (1 sekunda). Ak chcete použiť meškanie stačí pridať nasledujúci riadok kódu do cyklu while:

pygame.time.delay(1000)

Tým sa oneskorí ďalší snímok hry o 1 000 milisekúnd (1 sekunda).

Rozdiely medzi čakaním a oneskorením

Existuje niekoľko rozdielov medzi počkaj a meškanie funkcie. The počkaj funkcia uspí proces, aby zdieľal procesor s inými programami. The meškanie funkcia použije procesor na presnejšie oneskorenie. To znamená, že meškanie funkcia vyžaduje viac výkonu procesora ako počkaj a je vhodný pre hry, ktoré vyžadujú presné načasovanie.

Vytvorenie udalosti pomocou set_timer

Môžete použiť set_timer() na vytvorenie udalosti, ktorá sa spustí po určitom čase.

Udalosti v PyGame sú objekty, ktoré obsahujú informácie o používateľskom vstupe alebo programom generované správy. Ak chcete použiť túto funkciu, vytvorte vlastnú udalosť a pridajte nasledujúci riadok kódu:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Tým sa vytvorí udalosť, ktorá sa spustí po 1 000 milisekúndách – 1 sekunde. Existujú rôzne typy udalostí, ktoré môžete spustiť, napríklad pohyb myši, vstup z klávesnice a udalosti okna. Váš kód potom môže reagovať na tieto udalosti akýmkoľvek spôsobom, ktorý je najvhodnejší.

Ak napríklad chcete zmeniť os y obdĺžnikového objektu po 1 sekunde alebo keď sa spustí vlastná udalosť, môžete pridať nasledujúci riadok kódu:

ak event.type == CUSTOM_EVENT:
rect.y += 20

Týmto spôsobom môžete vo svojej hre ľahko vytvárať udalosti založené na čase, ktoré môžete použiť na vytvorenie zaujímavej a náročnej hry.

Zlepšite ovládanie hry s časom

Pomocou kontroly času môžete zlepšiť ovládanie hry. Čas môžete využiť na implementáciu zrýchlenia, spomalenia a dokonca aj podmienok hry. Mnoho hier zavádza koncept bullet time, kde sa akcia na krátku dobu spomalí.

Pomocou funkcií riadenia času v PyGame môžete tieto funkcie – a ešte viac – jednoducho implementovať do svojich vlastných hier.