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:
Přidejte textový objekt pro zobrazení času:čas = clock.get_time()
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:
Pro zobrazení snímkové frekvence můžete přidat textový objekt:fps = clock.get_fps()
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.