Naučite kako mjeriti vrijeme i koristiti ga za kontrolu raznih aspekata vaše igre.
U razvoju igara, dodavanje događaja temeljenih na vremenu može uvelike poboljšati mehaniku igranja i učiniti igre privlačnijim za igrače. Uključivanjem mjerača vremena možete uvesti izazove, stvoriti vremenski ograničene ciljeve ili dodati osjećaj hitnosti određenim elementima igre.
Stvorite jednostavnu igru
Započnite stvaranjem jednostavne igre da biste razumjeli osnove. Izgradite igru u kojoj se igrač može kretati lijevo i desno, a postojat će jedna platforma. Stvorite novu datoteku pod nazivom jednostavna igra.py i uvezite arkadni modul koji pruža potrebne funkcionalnosti za kreiranje igre.
Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.
Zatim definirajte GameWindow klasa, koja je podklasa od arkada. Prozor. Unutar klase GameWindow definirajte __u tome__ metoda, koja inicijalizira prozor s navedenom širinom, visinom i naslovom.
The na_pritisak_tipke
metoda detektira pritiske tipki sa strelicom lijevo ili desno. Pritiskom na lijevo smanjuje se igrač_x za 10 jedinica dok se pritiskom na desno povećava za 10 jedinica. Ovaj omogućuje igraču kretanje vodoravno unutar prozora igre.Da biste pokrenuli igru, definirajte glavnu funkciju, stvorite instancu GameWindow, pozovite metodu postavljanja za postavljanje prozora igre i na kraju pokrenite petlju igre pomoću arkada.run().
Dizajniranje strukture klase mjerača vremena
Da biste implementirali tajmere u svoju igru, možete stvoriti klasu Timer s potrebnim atributima i metodama. Ova klasa će pružiti funkcionalnosti za pokretanje mjerača vremena, njegovo zaustavljanje, dohvaćanje proteklog vremena i provjeru je li mjerač vremena istekao. Evo osnovne strukture za klasu Timer:
uvoz vrijeme
razredaTimer:
def__u tome__(ja, trajanje):
sebe.duration = trajanje
self.start_time = 0
self.is_running = lažnodefpočetak(sebe):
self.start_time = time.time()
self.is_running = PravidefStop(sebe):
self.is_running = lažnodefdobiti_proteklo_vrijeme(sebe):
ako self.is_running:
povratak time.time() - samo.vrijeme_početka
povratak0
defje_istekao(sebe):
povratak self.get_elapsed_time() >= self.duration
Klasa Timer zauzima a trajanje parametar u sekundama tijekom inicijalizacije. Klasa sadrži atribute kao što su vrijeme početka za pohranjivanje vremena kada je mjerač vremena počeo, i trči za praćenje stanja mjerača vremena.
The početak() metoda postavlja start_time na trenutno vrijeme pomoću vrijeme.vrijeme() i postavlja is_running na Pravi. The Stop() metoda jednostavno postavlja is_running na lažno. The get_elapsed_time() metoda izračunava proteklo vrijeme oduzimanjem start_time od trenutnog vremena.
Ako mjerač vremena radi, vraća proteklo vrijeme; inače vraća 0. The je_istekao() metoda provjerava je li proteklo vrijeme veće ili jednako trajanju, što pokazuje da je mjerač vremena istekao.
Implementacija mjerača vremena
Da biste demonstrirali odbrojavanje u svojoj igri, možete pokrenuti mjerač vremena kada igrač pritisne određenu tipku, kao što je razmaknica. Ispišite odbrojavanje na konzolu pomoću Python naredbe za ispis. Stvorite novu datoteku pod nazivom mjerač vremena.py i dodajte kod s ovim ažuriranjima:
uvoz vrijeme
razredaGameWindow(arkada. Prozor):
def__u tome__(sebe):
super().__init__(ŠIRINA, VISINA, "Jednostavna igra")
self.player_x = WIDTH // 2
self.player_y = VISINA // 2
self.timer = Timer(10)defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. PROSTOR:
samookidač.start()
defizvlačenje(sebe):
# Postojeći kod
ako self.timer.is_running:
proteklo_vrijeme = self.timer.get_elapsed_time()
r_time = self.timer.duration - proteklo_vrijeme
preostalo_vrijeme = max (r_vrijeme, 0)
ispis(f"Odbrojavanje: {preostalo vrijeme:.1f} sekundi")
Provjerite možete li vidjeti prozor terminala i prozor igre u isto vrijeme. Zatim pritisnite razmaknicu i vidjet ćete odbrojavanje vremena:
Rukovanje događajima mjerača vremena i radnjama pokretanja
Također možete pokrenuti funkciju koja crta pravokutnik kada odbrojavanje istekne. Stvorite novu datoteku pod nazivom rukovanje-događaj.py i dodajte kod sa sljedećim ažuriranjima:
defizvlačenje(sebe):
# Postojeći kod
ako self.timer.is_expired():
self.draw_rectangle()
defnacrtaj_pravokutnik(sebe):
arcade.draw_rectangle_filled (WIDTH // 2, VISINA // 2, 100, 100, Crvena)
Ispod je izlaz:
Pauziranje, ponovno postavljanje i ponovno pokretanje mjerača vremena
Da biste dodali funkcionalnost za pauziranje, ponovno postavljanje i nastavak odbrojavanja, možete proširiti Timer klase odgovarajućim metodama. Evo primjera:
razredaTimer:
# Postojeći koddefpauza(sebe):
self.duration -= self.get_elapsed_time()
self.is_running = lažnodefresetirati(sebe):
self.start_time = 0
self.is_running = lažno
defnastaviti(sebe):
self.start_time = time.time()
self.is_running = Pravi
Dodavanje vizualne povratne informacije mjeraču vremena
Da biste pružili vizualnu povratnu informaciju za mjerač vremena, možete uključiti tekst ili grafičke elemente na zaslon igre. Stvorite novu datoteku pod nazivom vizualni.py i dodajte kod sa sljedećim ažuriranjima:
defizvlačenje(sebe):
# Postojeći kod
ako self.timer.is_running:
tekst = f"Odbrojavanje: {preostalo vrijeme:.1f} sekundi"
arcade.draw_text (tekst, 10, 10, crno, 18)
Sada ćete vidjeti mjerač vremena izravno u prozoru igre umjesto na konzoli:
Uključujući dodatne značajke
Kako biste dodatno poboljšali događaje temeljene na vremenu, možete razmisliti o implementaciji sljedećih dodatnih značajki u svojim igrama.
Vremenska pojačanja ili bonusi
Uvedite pojačanja ili bonuse koji se povremeno pojavljuju tijekom igre. Ova pojačanja mogu pružiti privremene sposobnosti, dodatne bodove, povećanu brzinu ili poboljšana oružja.
Time što su vremenski ograničeni, igrači ih moraju strateški skupljati unutar određenog vremenskog okvira kako bi stekli prednost. Ovo dodaje uzbuđenje i nagrađuje brzo razmišljanje.
Vremenski ograničeni izazovi
Stvorite vremenski ograničene izazove u kojima igrači moraju izvršiti zadatak unutar određenog vremenskog okvira. Na primjer, dio zagonetke ili platforme koji zahtijeva rješavanje u određenom vremenu.
Ovo izaziva igrače da razmišljaju i djeluju brzo, dodajući uzbudljiv osjećaj hitnosti igranju. Uspješan završetak ovih izazova može otključati nagrade ili napredovati u priči.
Vremenski ograničene prepreke ili neprijatelji
Implementirajte vremenski određene prepreke ili neprijatelje koji predstavljaju prijetnju igraču. Na primjer, pokretne platforme koje se pojavljuju i nestaju u pravilnim intervalima ili neprijatelji koji postaju nepobjedivi na ograničeno vrijeme.
Igrači moraju točno tempirati svoje radnje i pokrete kako bi prešli te prepreke ili porazili neprijatelje prije nego što vrijeme istekne. Ovo igrivosti dodaje sloj strategije i koordinacije.
Najbolji primjeri iz prakse za događaje temeljene na vremenu
Prilikom implementacije događaja temeljenih na vremenu u svojim igrama, bitno je slijediti ove najbolje prakse.
Test i ravnoteža
Temeljito testirajte svoje događaje temeljene na vremenu kako biste bili sigurni da su pravedni i uravnoteženi. Fino podesite trajanje, težinu i nagrade kako biste stvorili ugodna iskustva igranja.
Povratne informacije korisnika
Pružite jasne i intuitivne povratne informacije igračima o statusu mjerača vremena i svim vremenskim događajima. Dodavanje zvučnih efekata, vizualni indikatori ili tekstualni znakovi mogu pomoći igračima da razumiju vremenska ograničenja i posljedice svojih radnji.
Dosljedno mjerenje vremena
Koristite dosljedan sustav mjerenja vremena tijekom cijele igre. Na primjer, koristite sekunde kao jedinicu za sve mjerače vremena i izračune povezane s vremenom. Ovo osigurava dosljednost i lakoću razumijevanja za igrače i programere.
Ručka s rubnim kućištima
Razmotrite scenarije u kojima igra može biti pauzirana, minimizirana ili pokrenuta u pozadini. Riješite ove situacije elegantno kako biste održali točan vremenski raspored i spriječili nenamjerno ponašanje kada se igra nastavi.
Slijedeći ove najbolje prakse, možete kreirati događaje temeljene na vremenu koji poboljšavaju igranje, izazivaju igrače i pružaju uravnoteženo i ugodno iskustvo.
Učinite igre zabavnijim s vremenskim događajima
Uključivanjem vremenskih događaja u svoje igre, možete stvoriti dinamično i privlačno iskustvo za igrače. Vremenski ograničeni izazovi dodaju uzbuđenje i hitnost, dok vremenski određena pojačanja ili prepreke mogu stvoriti prilike za donošenje strateških odluka.
Eksperimentirajte s različitim mehanikama koje se temelje na vremenu kako biste pronašli pravu ravnotežu za svoju igru i ne zaboravite testirati igru i ponavljati kako biste povećali zabavu i užitak.