Naučte sa merať čas a používať ho na ovládanie rôznych aspektov vašej hry.

Pri vývoji hier môže pridávanie udalostí založených na čase výrazne zlepšiť hernú mechaniku a urobiť hry pre hráčov pútavejšími. Začlenením časovačov môžete zavádzať výzvy, vytvárať časovo obmedzené ciele alebo dodať určitým herným prvkom pocit naliehavosti.

Vytvorte jednoduchú hru

Začnite vytvorením jednoduchej hry, aby ste pochopili základy. Postavte hru, v ktorej sa hráč môže pohybovať doľava a doprava a bude existovať jedna platforma. Vytvorte nový súbor s názvom jednoduchá hra.py a importujte arkádový modul, ktorý poskytuje potrebné funkcie na vytvorenie hry.

Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.

Ďalej definujte GameWindow triedy, ktorá je podtriedou pasáž. okno. Vo vnútri triedy GameWindow definujte __init__ metóda, ktorá inicializuje okno so zadanou šírkou, výškou a nadpisom.

The on_key_press metóda detekuje stlačenie klávesu so šípkou doľava alebo doprava. Stlačením doľava sa zníži

instagram viewer
hráč_x o 10 jednotiek, pričom stlačením doprava ju zvýšite o 10 jednotiek. Toto umožňuje hráčovi pohybovať sa vodorovne v hernom okne.

Ak chcete spustiť hru, definujte hlavnú funkciu, vytvorte inštanciu GameWindow, zavolajte metódu nastavenia na nastavenie okna hry a nakoniec spustite hernú slučku pomocou arcade.run().

Navrhovanie štruktúry triedy časovača

Na implementáciu časovačov do vašej hry môžete vytvoriť triedu Timer s potrebnými atribútmi a metódami. Táto trieda bude poskytovať funkcie na spustenie, zastavenie časovača, získanie uplynutého času a kontrolu, či časovač vypršal. Tu je základná štruktúra triedy Timer:

importovať čas

triedaČasovač:
def__init__(ja, trvanie):
seba.trvanie = trvanie
self.start_time = 0
self.is_running = Nepravdivé

defzačať(ja):
self.start_time = time.time()
self.is_running = Pravda

defzastaviť(ja):
self.is_running = Nepravdivé

defget_elapsed_time(ja):
ak self.is_running:
vrátiť time.time() - self.start_time
vrátiť0

defis_expired(ja):
vrátiť self.get_elapsed_time() >= self.duration

Trieda Timer trvá a trvanie parameter v sekundách počas inicializácie. Trieda obsahuje atribúty ako napr Doba spustenia na uloženie času, kedy sa časovač spustil, a beží sledovať stav časovača.

The začať () metóda nastaví čas začiatku na aktuálny čas pomocou time.time() a nastaví je_beh na Pravda. The stop() metóda jednoducho nastaví is_running to Nepravdivé. The get_elapsed_time() metóda vypočíta uplynutý čas odčítaním počiatočného času od aktuálneho času.

Ak je časovač spustený, vráti uplynutý čas; v opačnom prípade vráti 0. The is_expired() metóda kontroluje, či je uplynutý čas väčší alebo rovný trvaniu, čo znamená, že časovač vypršal.

Implementácia časovačov odpočítavania

Ak chcete vo svojej hre demonštrovať odpočítavanie, môžete spustiť časovač, keď hráč stlačí konkrétny kláves, napríklad medzerník. Vytlačte odpočítavanie do konzoly pomocou príkazu print Pythonu. Vytvorte nový súbor s názvom timer.py a pridajte kód s týmito aktualizáciami:

importovať čas

triedaGameWindow(arkáda. okno):
def__init__(ja):
super().__init__(WIDTH, HEIGHT, "Jednoduchá hra")
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
samospúšť = Časovač(10)

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. SPACE:
samospúšť.spustenie()

defon_draw(ja):
# Existujúci kód
ak self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - elapsed_time
zostávajúci_čas = max (r_time, 0)
vytlačiť (f" Odpočítavanie: {zostávajúci čas:.1f} sekundy")

Uistite sa, že vidíte súčasne okno terminálu a okno hry. Potom stlačte medzerník a uvidíte odpočítavanie časovača:

Spracovanie udalostí časovača a spúšťacích akcií

Môžete tiež spustiť funkciu, ktorá nakreslí obdĺžnik keď uplynie odpočítavací časovač. Vytvorte nový súbor s názvom handle-event.py a pridajte kód s nižšie uvedenými aktualizáciami:

defon_draw(ja):
# Existujúci kód
ak self.timer.is_expired():
self.draw_rectangle()

defnakresliť_obdĺžnik(ja):
arcade.draw_rectangle_filled (WIDTH // 2, HEIGHT // 2, 100, 100, červená)

Nižšie je výstup:

Pozastavenie, vynulovanie a obnovenie časovača

Ak chcete pridať funkcie na pozastavenie, vynulovanie a opätovné spustenie časovača, môžete predĺžiť Časovač triedy vhodnými metódami. Tu je príklad:

triedaČasovač:
# Existujúci kód

defpauza(ja):
self.duration -= self.get_elapsed_time()
self.is_running = Nepravdivé

defresetovať(ja):
self.start_time = 0
self.is_running = Nepravdivé

defpokračovať(ja):
self.start_time = time.time()
self.is_running = Pravda

Pridanie vizuálnej spätnej väzby do časovača

Ak chcete poskytnúť vizuálnu spätnú väzbu pre časovač, môžete na hernú obrazovku začleniť textové alebo grafické prvky. Vytvorte nový súbor s názvom visual.py a pridajte kód s nižšie uvedenými aktualizáciami:

defon_draw(ja):
# Existujúci kód
ak self.timer.is_running:
text = f" Odpočítavanie: {zostávajúci čas:.1f} sekundy"
arcade.draw_text (text, 10, 10, čierna, 18)

Teraz uvidíte časovač priamo v okne hry namiesto konzoly:

Vrátane ďalších funkcií

Ak chcete ešte viac vylepšiť udalosti založené na čase, môžete zvážiť implementáciu nasledujúcich dodatočných funkcií do svojich hier.

Časovo založené vylepšenia alebo bonusy

Predstavte vylepšenia alebo bonusy, ktoré sa pravidelne objavujú počas hry. Tieto vylepšenia môžu poskytnúť dočasné schopnosti, extra body, vyššiu rýchlosť alebo vylepšené zbrane.

Tým, že sú časovo obmedzené, hráči ich musia strategicky zbierať v konkrétnom časovom rámci, aby získali výhodu. To pridáva vzrušenie a odmeňuje rýchle myslenie.

Časovo obmedzené výzvy

Vytvárajte časovo obmedzené výzvy, kde hráči musia splniť úlohu v určitom časovom rámci. Napríklad hlavolam alebo plošinovka, ktorá vyžaduje vyriešenie v danom čase.

To vyzýva hráčov, aby premýšľali a konali rýchlo, čo dodáva hre vzrušujúci pocit naliehavosti. Úspešné splnenie týchto výziev môže odomknúť odmeny alebo pokročiť v príbehu.

Časované prekážky alebo nepriatelia

Implementujte načasované prekážky alebo nepriateľov, ktorí predstavujú hrozbu pre hráča. Napríklad pohyblivé plošiny, ktoré sa objavujú a miznú v pravidelných intervaloch, alebo nepriatelia, ktorí sa na obmedzený čas stanú neporaziteľnými.

Hráči musia správne načasovať svoje akcie a pohyby, aby prekonali tieto prekážky alebo porazili nepriateľov skôr, ako vyprší čas. To pridáva do hry vrstvu stratégie a koordinácie.

Osvedčené postupy pre udalosti založené na čase

Pri implementácii udalostí založených na čase vo svojich hrách je nevyhnutné dodržiavať tieto osvedčené postupy.

Test a rovnováha

Dôkladne otestujte svoje časové udalosti, aby ste sa uistili, že sú spravodlivé a vyvážené. Dolaďte trvanie, náročnosť a odmeny, aby ste vytvorili príjemné herné zážitky.

Spätná väzba používateľov

Poskytnite hráčom jasnú a intuitívnu spätnú väzbu týkajúcu sa stavu časovača a akýchkoľvek udalostí založených na čase. Pridávanie zvukových efektov, vizuálne indikátory alebo textové podnety môžu hráčom pomôcť pochopiť časové obmedzenia a dôsledky ich činov.

Konzistentné meranie času

Počas hry používajte konzistentný systém merania času. Napríklad použite sekundy ako jednotku pre všetky časovače a výpočty súvisiace s časom. To zaisťuje konzistentnosť a ľahké pochopenie pre hráčov aj vývojárov.

Rukoväť Edge Case

Zvážte scenáre, v ktorých môže byť hra pozastavená, minimalizovaná alebo spustená na pozadí. Zvládajte tieto situácie elegantne, aby ste udržali presné načasovanie a zabránili neúmyselnému správaniu, keď sa hra obnoví.

Dodržiavaním týchto osvedčených postupov môžete vytvárať udalosti založené na čase, ktoré zlepšujú hrateľnosť, vyzývajú hráčov a poskytujú vyvážený a príjemný zážitok.

Vďaka udalostiam založeným na čase sú hry zábavnejšie

Začlenením udalostí založených na čase do svojich hier môžete vytvoriť dynamický a pútavý zážitok pre hráčov. Časovo obmedzené výzvy pridávajú vzrušenie a naliehavosť, zatiaľ čo načasované vylepšenia alebo prekážky môžu vytvárať príležitosti na strategické rozhodovanie.

Experimentujte s rôznymi mechanikami založenými na čase, aby ste našli správnu rovnováhu pre svoju hru, a nezabudnite hrať test a opakovať, aby ste maximalizovali zábavu a pôžitok.