Naučte se měřit čas a používat jej k ovládání různých aspektů vaší hry.
Při vývoji her může přidání událostí založených na čase výrazně zlepšit herní mechanismy a učinit hry pro hráče poutavějšími. Začleněním časovačů můžete představovat výzvy, vytvářet časově omezené cíle nebo dodávat určitým herním prvkům pocit naléhavosti.
Vytvořte jednoduchou hru
Začněte vytvořením jednoduché hry, abyste pochopili základy. Postavte hru, kde se hráč může pohybovat doleva a doprava, a bude existovat jediná platforma. Vytvořte nový soubor s názvem jednoduchá hra.py a importujte arkádový modul, který poskytuje potřebné funkce pro vytvoření hry.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Dále definujte GameWindow třídy, která je podtřídou pasáž. Okno. Uvnitř třídy GameWindow definujte __init__ metoda, která inicializuje okno se zadanou šířkou, výškou a nadpisem.
The on_key_press metoda detekuje stisknutí levé nebo pravé šipky. Stisknutím doleva se sníží
hráč_x o 10 jednotek, zatímco stisknutí vpravo ji zvýší o 10 jednotek. Tento umožňuje hráči pohyb vodorovně v okně hry.Chcete-li spustit hru, definujte hlavní funkci, vytvořte instanci okna GameWindow, zavolejte metodu nastavení pro nastavení okna hry a nakonec spusťte herní smyčku pomocí arcade.run().
Návrh struktury třídy časovače
Chcete-li do hry implementovat časovače, můžete vytvořit třídu Timer s nezbytnými atributy a metodami. Tato třída bude poskytovat funkce pro spuštění, zastavení, načtení uplynulého času a kontrolu, zda časovač nevypršel. Zde je základní struktura třídy Timer:
import čas
třídaČasovač:
def__init__(já, trvání):
self.duration = trvání
self.start_time = 0
self.is_running = NepravdivédefStart(já):
self.start_time = time.time()
self.is_running = Skutečnýdefstop(já):
self.is_running = Nepravdivédefget_elapsed_time(já):
-li self.is_running:
vrátit se time.time() - self.start_time
vrátit se0
defvypršela platnost(já):
vrátit se self.get_elapsed_time() >= self.duration
Třída Timer trvá a doba trvání parametr v sekundách během inicializace. Třída obsahuje atributy jako např Doba spuštění pro uložení času, kdy se časovač spustil, a běží sledovat stav časovače.
The Start() metoda nastaví start_time na aktuální čas pomocí time.time() a nastaví is_running to Skutečný. The stop() metoda jednoduše nastaví is_running to Nepravdivé. The get_elapsed_time() metoda vypočítá uplynulý čas odečtením start_time od aktuálního času.
Pokud časovač běží, vrací uplynulý čas; jinak vrátí 0. The is_expired() metoda zkontroluje, zda je uplynulý čas větší nebo roven trvání, což znamená, že časovač vypršel.
Implementace časovačů odpočítávání
Chcete-li ve své hře předvést odpočítávání, můžete spustit časovač, když hráč stiskne určitou klávesu, například mezerník. Vytiskněte odpočítávání do konzole pomocí příkazu print Pythonu. Vytvořte nový soubor s názvem timer.py a přidejte kód s těmito aktualizacemi:
import čas
třídaGameWindow(pasáž. Okno):
def__init__(já):
super().__init__(WIDTH, HEIGHT, "Jednoduchá hra")
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
samospoušť = Časovač(10)defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. PROSTOR:
samospoušť.start()
defon_draw(já):
# Stávající kód
-li samospoušť. běží:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - elapsed_time
zbývající_čas = max (r_time, 0)
tisk(f" Odpočítávání: {zbývající čas:.1F} sekundy")
Ujistěte se, že vidíte okno terminálu a okno hry současně. Poté stiskněte mezerník a uvidíte odpočítávání časovače:
Zpracování událostí časovače a spouštění akcí
Můžete také spustit funkci, která nakreslí obdélník až vyprší odpočítávací měřič. Vytvořte nový soubor s názvem handle-event.py a přidejte kód s níže uvedenými aktualizacemi:
defon_draw(já):
# Stávající kód
-li samospoušť.is_expired():
self.draw_rectangle()
defnakreslit_obdélník(já):
arcade.draw_rectangle_filled (WIDTH // 2, HEIGHT // 2, 100, 100, Červené)
Níže je výstup:
Pozastavení, resetování a obnovení časovače
Chcete-li přidat funkce pro pozastavení, resetování a obnovení časovače, můžete rozšířit Časovač třídy vhodnými metodami. Zde je příklad:
třídaČasovač:
# Stávající kóddefpauza(já):
self.duration -= self.get_elapsed_time()
self.is_running = Nepravdivédefresetovat(já):
self.start_time = 0
self.is_running = Nepravdivé
defživotopis(já):
self.start_time = time.time()
self.is_running = Skutečný
Přidání vizuální zpětné vazby k časovači
Chcete-li poskytnout vizuální zpětnou vazbu pro časovač, můžete na herní obrazovku začlenit text nebo grafické prvky. Vytvořte nový soubor s názvem visual.py a přidejte kód s níže uvedenými aktualizacemi:
defon_draw(já):
# Stávající kód
-li samospoušť. běží:
text = f" Odpočítávání: {zbývající čas:.1F} sekundy"
arcade.draw_text (text, 10, 10, Černá, 18)
Nyní uvidíte časovač přímo v okně hry místo konzole:
Včetně dalších funkcí
Chcete-li dále vylepšit události založené na čase, můžete zvážit implementaci následujících doplňkových funkcí do svých her.
Časově založené vylepšení nebo bonusy
Představte vylepšení nebo bonusy, které se pravidelně objevují v průběhu hry. Tyto vylepšení mohou poskytnout dočasné schopnosti, extra body, zvýšenou rychlost nebo vylepšené zbraně.
Tím, že jsou časově omezené, je hráči musí strategicky sbírat v určitém časovém rámci, aby získali výhodu. To přidává vzrušení a odměňuje rychlé myšlení.
Časově omezené výzvy
Vytvářejte časově omezené výzvy, kde hráči musí splnit úkol v určitém časovém rámci. Například puzzle nebo plošinovka, která vyžaduje vyřešení v daném čase.
To hráče vybízí k rychlému přemýšlení a jednání, což dodává hře vzrušující pocit naléhavosti. Úspěšné splnění těchto výzev může odemknout odměny nebo pokročit v příběhu.
Časované překážky nebo nepřátelé
Implementujte načasované překážky nebo nepřátele, které pro hráče představují hrozbu. Například pohyblivé plošiny, které se objevují a mizí v pravidelných intervalech, nebo nepřátelé, kteří se stanou na omezenou dobu neporazitelní.
Hráči musí správně načasovat své akce a pohyby, aby mohli překonat tyto překážky nebo porazit nepřátele dříve, než vyprší čas. To přidává do hry vrstvu strategie a koordinace.
Osvědčené postupy pro události založené na čase
Při implementaci událostí založených na čase ve svých hrách je nezbytné dodržovat tyto osvědčené postupy.
Test a rovnováha
Důkladně otestujte své časové události, abyste se ujistili, že jsou spravedlivé a vyvážené. Vylaďte dobu trvání, obtížnost a odměny, abyste vytvořili příjemné herní zážitky.
Uživatelská zpětná vazba
Poskytněte hráčům jasnou a intuitivní zpětnou vazbu ohledně stavu časovače a jakýchkoliv událostí založených na čase. Přidání zvukových efektů, vizuální indikátory nebo textové podněty mohou hráčům pomoci pochopit časová omezení a důsledky jejich akcí.
Konzistentní měření času
Používejte konzistentní systém měření času v průběhu hry. Například použijte sekundy jako jednotku pro všechny časovače a výpočty související s časem. To zajišťuje konzistenci a snadné porozumění pro hráče i vývojáře.
Rukojeť Edge Cases
Zvažte scénáře, kdy může být hra pozastavena, minimalizována nebo spuštěna na pozadí. Zvládejte tyto situace elegantně, abyste udrželi přesné načasování a zabránili nechtěnému chování, když hra pokračuje.
Dodržováním těchto osvědčených postupů můžete vytvářet události založené na čase, které vylepšují hratelnost, vyzývají hráče a poskytují vyvážený a příjemný zážitek.
Díky událostem založeným na čase budou hry zábavnější
Začleněním událostí založených na čase do svých her můžete vytvořit dynamický a poutavý zážitek pro hráče. Časově omezené výzvy dodávají vzrušení a naléhavost, zatímco načasovaná vylepšení nebo překážky mohou vytvářet příležitosti pro strategická rozhodnutí.
Experimentujte s různými mechanikami založenými na čase, abyste našli tu správnou rovnováhu pro svou hru, a nezapomeňte na testování a opakování, abyste maximalizovali zábavu a požitek.