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
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 = Pravdadefzastaviť(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óddefpauza(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.