Naučite se meriti čas in ga uporabljati za nadzor različnih vidikov vaše igre.
Pri razvoju iger lahko dodajanje časovnih dogodkov močno izboljša mehaniko igranja in naredi igre bolj privlačne za igralce. Z vključitvijo časovnikov lahko uvedete izzive, ustvarite časovno omejene cilje ali nekaterim elementom igre dodate občutek nujnosti.
Ustvari preprosto igro
Začnite z ustvarjanjem preproste igre, da boste razumeli osnove. Zgradite igro, kjer se lahko igralec premika levo in desno in bo na voljo ena platforma. Ustvari novo datoteko z imenom simple-game.py in uvozite arkadni modul, ki zagotavlja potrebne funkcije za ustvarjanje igre.
Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.
Nato definirajte GameWindow razred, ki je podrazred arkada. Okno. Znotraj razreda GameWindow definirajte __v__ metoda, ki inicializira okno z določeno širino, višino in naslovom.
The na_pritisk_tipke metoda zazna pritiske levo ali desno puščične tipke. S pritiskom na levo se zmanjša
igralec_x za 10 enot, medtem ko ga s pritiskom na desno povečate za 10 enot. to omogoča igralcu premikanje vodoravno v oknu igre.Če želite zagnati igro, definirajte glavno funkcijo, ustvarite primerek GameWindow, pokličite metodo nastavitve za nastavitev okna igre in na koncu zaženite zanko igre z arcade.run().
Oblikovanje strukture razreda časovnika
Če želite implementirati časovnike v svojo igro, lahko ustvarite razred Timer s potrebnimi atributi in metodami. Ta razred bo nudil funkcije za zagon časovnika, njegovo zaustavitev, pridobivanje pretečenega časa in preverjanje, ali je časovnik potekel. Tukaj je osnovna struktura za razred Timer:
uvoz čas
razredČasovnik:
def__v__(sam, trajanje):
self.duration = trajanje
self.start_time = 0
self.is_running = Falsedefzačetek(sebe):
self.start_time = time.time()
self.is_running = Pravdefstop(sebe):
self.is_running = Falsedefget_elapsed_time(sebe):
če self.is_running:
vrnitev time.time() - self.start_time
vrnitev0
defje_poteklo(sebe):
vrnitev self.get_elapsed_time() >= self.duration
Razred Timer traja a trajanje parameter v sekundah med inicializacijo. Razred vsebuje atribute, kot so Začetni čas za shranjevanje časa, ko se je merilnik časa začel, in teče za sledenje stanju časovnika.
The začetek() metoda nastavi start_time na trenutni čas z uporabo čas.čas() in nastavi is_running na Prav. The stop() metoda preprosto nastavi is_running na False. The get_elapsed_time() metoda izračuna pretečeni čas tako, da od trenutnega časa odšteje start_time.
Če časovnik teče, vrne pretečeni čas; sicer vrne 0. The is_expired() metoda preveri, ali je pretečeni čas večji ali enak trajanju, kar pomeni, da je časovnik potekel.
Implementacija odštevalnikov časa
Če želite prikazati odštevanje v igri, lahko zaženete časovnik, ko igralec pritisne določeno tipko, na primer preslednico. Natisnite odštevanje na konzolo s Pythonovim ukazom za tiskanje. Ustvari novo datoteko z imenom timer.py in dodajte kodo s temi posodobitvami:
uvoz čas
razredGameWindow(arkadne. okno):
def__v__(sebe):
super().__init__(ŠIRINA, VIŠINA, "Enostavna igra")
self.player_x = WIDTH // 2
self.player_y = VIŠINA // 2
self.timer = Časovnik(10)defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. PRESTOR:
self.timer.start()
defon_draw(sebe):
# Obstoječa koda
če self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = samosprožilec.trajanje - pretečeni_čas
preostali_čas = max (r_čas, 0)
natisni(f"Odštevanje: {preostali čas:.1f} sekund")
Prepričajte se, da vidite okno terminala in okno igre hkrati. Nato pritisnite preslednico in videli boste odštevalnik časa:
Upravljanje dogodkov časovnika in sprožitev dejanj
Sprožite lahko tudi funkcijo, ki nariše pravokotnik ko poteče odštevalnik časa. Ustvari novo datoteko z imenom handle-event.py in dodajte kodo s spodnjimi posodobitvami:
defon_draw(sebe):
# Obstoječa koda
če self.timer.is_expired():
self.draw_rectangle()
defrisanje_pravokotnik(sebe):
arcade.draw_rectangle_filled (ŠIRINA // 2, VIŠINA // 2, 100, 100, rdeča)
Spodaj je rezultat:
Premor, ponastavitev in nadaljevanje časovnika
Če želite dodati funkcijo za zaustavitev, ponastavitev in nadaljevanje časovnika, lahko razširite Časovnik razreda z ustreznimi metodami. Tukaj je primer:
razredČasovnik:
# Obstoječa kodadefpavza(sebe):
self.duration -= self.get_elapsed_time()
self.is_running = Falsedefponastaviti(sebe):
self.start_time = 0
self.is_running = False
defNadaljuj(sebe):
self.start_time = time.time()
self.is_running = Prav
Dodajanje vizualnih povratnih informacij časovniku
Če želite zagotoviti vizualne povratne informacije za časovnik, lahko na zaslon igre vključite besedilne ali grafične elemente. Ustvari novo datoteko z imenom visual.py in dodajte kodo s spodnjimi posodobitvami:
defon_draw(sebe):
# Obstoječa koda
če self.timer.is_running:
besedilo = f"Odštevanje: {preostali čas:.1f} sekund"
arcade.draw_text (besedilo, 10, 10, Črna, 18)
Zdaj boste namesto v konzoli videli časovnik neposredno v oknu igre:
Vključno z dodatnimi funkcijami
Če želite dodatno izboljšati časovno zasnovane dogodke, lahko razmislite o implementaciji naslednjih dodatnih funkcij v svoje igre.
Časovni dodatki ali bonusi
Uvedite okrepitve ali bonuse, ki se občasno pojavljajo skozi igro. Te okrepitve lahko zagotovijo začasne sposobnosti, dodatne točke, povečano hitrost ali izboljšano orožje.
Če so časovno omejeni, jih morajo igralci strateško zbrati v določenem časovnem okviru, da pridobijo prednost. To dodaja razburjenje in nagrajuje hitro razmišljanje.
Časovno omejeni izzivi
Ustvarite časovno omejene izzive, kjer morajo igralci opraviti nalogo v določenem časovnem okviru. Na primer uganka ali razdelek o platformah, ki zahteva rešitev v določenem času.
To izziva igralce, da hitro razmišljajo in ukrepajo, kar igranju doda vznemirljiv občutek nujnosti. Uspešno dokončanje teh izzivov lahko odklene nagrade ali napreduje v zgodbi.
Časovno določene ovire ali sovražniki
Izvedite časovno določene ovire ali sovražnike, ki predstavljajo grožnjo igralcu. Na primer premikajoče se platforme, ki se pojavljajo in izginjajo v rednih intervalih, ali sovražniki, ki za omejen čas postanejo nepremagljivi.
Igralci morajo pravilno tempirati svoja dejanja in gibe, da premagajo te ovire ali premagajo sovražnike, preden se čas izteče. To igranju doda plast strategije in koordinacije.
Najboljše prakse za časovno odvisne dogodke
Pri izvajanju časovno odvisnih dogodkov v svojih igrah je bistveno, da upoštevate te najboljše prakse.
Test in ravnovesje
Temeljito preizkusite svoje časovne dogodke, da zagotovite, da so pravični in uravnoteženi. Natančno nastavite trajanje, težavnost in nagrade, da ustvarite prijetne igralne izkušnje.
Povratne informacije uporabnikov
Zagotovite jasne in intuitivne povratne informacije igralcem glede statusa časovnika in morebitnih časovnih dogodkov. Dodajanje zvočnih učinkov, vizualni indikatorji ali besedilni znaki lahko pomagajo igralcem razumeti časovne omejitve in posledice njihovih dejanj.
Dosledno merjenje časa
Uporabljajte dosleden sistem merjenja časa skozi celotno igro. Uporabite na primer sekunde kot enoto za vse časovnike in s časom povezane izračune. To zagotavlja doslednost in enostavnost razumevanja za igralce in razvijalce.
Handle Edge Cases
Razmislite o scenarijih, kjer je igra lahko začasno ustavljena, minimizirana ali teče v ozadju. S temi situacijami ravnajte elegantno, da ohranite točen čas in preprečite nenamerno vedenje, ko se igra nadaljuje.
Z upoštevanjem teh najboljših praks lahko ustvarite časovno zasnovane dogodke, ki izboljšajo igranje, izzivajo igralce in zagotavljajo uravnoteženo in prijetno izkušnjo.
Naredite igre bolj zabavne s časovnimi dogodki
Z vključitvijo časovno odvisnih dogodkov v svoje igre lahko ustvarite dinamično in privlačno izkušnjo za igralce. Časovno omejeni izzivi dodajo razburjenje in nujnost, medtem ko lahko časovno omejene okrepitve ali ovire ustvarijo priložnosti za strateško odločanje.
Eksperimentirajte z različnimi časovnimi mehanikami, da najdete pravo ravnovesje za svojo igro, in ne pozabite preizkusiti igranja in ponavljati, da povečate zabavo in užitek.