Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Chtěli jste někdy vytvořit vzrušující hru pomocí knihovny PyGame Pythonu, ale cítili jste se ohromeni konceptem řízení času? Pokud ano, nejste sami.

Čas je jednou z nejkritičtějších součástí vývoje her a pochopení toho, jak čas v PyGame funguje, je nezbytné pro vytváření poutavých a úspěšných her. PyGame poskytuje několik užitečných funkcí a modulů, které vám umožní ovládat čas ve vašich hrách.

Vytvoření jednoduché hry

Začněte vytvořením jednoduché hry, kde se obdélník pohybuje doprava. Začít, nainstalujte pip do svého zařízení a pomocí příkazu níže nainstalujte modul PyGame:

pip nainstalovat pygame

Zde najdete všechny příklady kódu úložiště GitHub.

Po instalaci naimportujte modul PyGame. Poté vytvořte obrazovku o velikosti 800 x 600 a bílou barvou pozadí a přidejte obdélníkový objekt. Kód by měl vypadat nějak takto:

import pygame
pygame.init()
obrazovka = pygame.display.set_mode((800, 600))
pozadí = pygame. Povrch (screen.get_size())
background.fill((255, 255, 255))
rect = pygame. Rect(0, 0, 20, 20)

Poté pomocí smyčky while udržujte hru spuštěnou a udržujte obdélníkový objekt v pohybu doprava, dokud nedosáhne konce obrazovky.

běh = Skutečný

zatímco běh:
pro událost v pygame.event.get():
-li event.type == pygame. PŘESTAT:
běh = Nepravdivé

rect.x += 1

-li rect.x > 780:
rect.x = 0

screen.blit (pozadí, (0, 0))
pygame.draw.rect (obrazovka, (0, 0, 0), obdélník)
pygame.display.update()

Můžete také přidat uživatelské vstupy a kolize ve hře. Níže je výstup:

Přehled časového modulu PyGame

Chcete-li ovládat čas v této hře, můžete použít pygame.time modul. Tento modul poskytuje různé užitečné funkce, včetně a Hodiny objekt s metodami jako get_ticks(), Počkejte(), a zpoždění(). Pomocí těchto funkcí můžete snadno ovládat čas ve své hře.

Vytvoření objektu hodin pro sledování času

V PyGame můžete ke sledování času použít objekt Clock. Chcete-li vytvořit hodiny, jednoduše použijte následující řádek kódu:

hodiny = pygame.time. Hodiny()

S tímto objektem Hodiny nyní můžete sledovat čas ve své hře. S objektem Clock je spojeno také několik dalších užitečných funkcí, jako například:

  • get_time(): Pomocí této funkce můžete získat čas potřebný pro každý snímek hry. Chcete-li tuto funkci použít, jednoduše přidejte následující řádek kódu za smyčku while:
    čas = clock.get_time()
    Přidejte textový objekt pro zobrazení času:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('Čas: {} ms'.format (čas), Skutečný, (0, 0, 0))
    screen.blit (text, (0, 0))
  • klíště(): Tuto funkci použijte k nastavení snímkové frekvence hry. Ve výchozím nastavení je snímková frekvence nastavena na 60 FPS. Chcete-li jej nastavit na 30 FPS, jednoduše přidejte následující řádek kódu:
    hodiny.tikat(30)
  • get_fps(): Aktuální snímkovou frekvenci hry můžete získat pomocí get_fps. Chcete-li tuto funkci použít, jednoduše přidejte následující řádek kódu:
    fps = clock.get_fps()
    Pro zobrazení snímkové frekvence můžete přidat textový objekt:
    font = pygame.font. SysFont('Arial', 18)
    text = font.render('FPS: {}'.formát (fps), Skutečný, (0, 0, 0))
    screen.blit (text, (0, 20))
  • tick_busy_loop(): Tato funkce vám umožňuje vypočítat, kolik milisekund uplynulo od posledního volání klíště() funkce. Chcete-li jej použít, jednoduše přidejte následující řádek kódu:
    clock.tick_busy_loop(30)

Získání času pomocí get_ticks

The get_ticks() funkce vrací čas v milisekundách od inicializace PyGame. Chcete-li použít tuto funkci, přidejte následující řádek kódu:

time_elapsed = pygame.time.get_ticks()

Přidejte textový objekt pro zobrazení času:

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

Uplynulý čas můžete použít k implementaci herních prvků založených na čase, jako jsou vylepšení, která trvají určitou dobu. Můžete například implementovat zapnutí, které zvýší rychlost obdélníkového objektu na 5 sekund:

-li uplynulý čas / 5000 > 0:
rect.x += 5

Níže je výstup:

Pozastavení hry pomocí funkcí čekání a zpoždění

PyGame také poskytuje dvě funkce, které můžete použít k pozastavení hry na určitou dobu: the Počkejte funkce a zpoždění funkce.

Chcete-li použít Počkejte stačí přidat následující řádek kódu do cyklu while:

pygame.time.wait(1000)

Tím se hra pozastaví na 1000 milisekund (1 sekunda). Chcete-li použít zpoždění stačí přidat následující řádek kódu do cyklu while:

pygame.time.delay(1000)

Tím se zdrží další snímek hry o 1000 milisekund (1 sekunda).

Rozdíly mezi čekáním a zpožděním

Existuje několik rozdílů mezi Počkejte a zpoždění funkcí. The Počkejte funkce uspí proces, aby sdílel procesor s jinými programy. The zpoždění Funkce použije procesor ke zpřesnění zpoždění. To znamená, že zpoždění funkce vyžaduje více výkonu procesoru než Počkejte a je vhodný pro hry, které vyžadují přesné načasování.

Vytvoření události pomocí set_timer

Můžete použít set_timer() k vytvoření události, která se spustí po zadané době.

Události v PyGame jsou objekty, které obsahují informace o uživatelském vstupu nebo programem generované zprávy. Chcete-li použít tuto funkci, vytvořte vlastní událost a přidejte následující řádek kódu:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Tím se vytvoří událost, která se spustí po 1 000 milisekundách – 1 sekundě. Existují různé typy událostí, které můžete spustit, jako je pohyb myši, vstup z klávesnice a události okna. Váš kód pak může na tyto události reagovat jakýmkoliv nejvhodnějším způsobem.

Pokud například chcete změnit osu y obdélníkového objektu po 1 sekundě nebo když se spustí vlastní událost, můžete přidat následující řádek kódu:

-li event.type == CUSTOM_EVENT:
rect.y += 20

Tímto způsobem můžete ve své hře snadno vytvářet události založené na čase, které můžete použít k vytvoření zajímavé a náročné hry.

Zlepšete ovládání hry s časem

Pomocí ovládání času můžete vylepšit ovládání hry. Čas můžete využít k implementaci zrychlení, zpomalení a dokonce podmínek pro přehrání hry. Mnoho her zavádí koncept bullet time, kdy se akce na krátkou dobu zpomalí.

Pomocí funkcí řízení času v PyGame můžete tyto funkce – a další – snadno implementovat do svých vlastních her.