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íží

instagram viewer
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ód

defpauza(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.