Uzziniet, kā izmērīt laiku un izmantot to, lai kontrolētu dažādus savas spēles aspektus.
Spēļu izstrādē uz laiku balstītu notikumu pievienošana var ievērojami uzlabot spēles mehāniku un padarīt spēles spēlētājiem saistošākas. Iekļaujot taimerus, varat ieviest izaicinājumus, izveidot ierobežotu laiku mērķus vai pievienot noteiktiem spēles elementiem steidzamības sajūtu.
Izveidojiet vienkāršu spēli
Sāciet, izveidojot vienkāršu spēli, lai saprastu pamatus. Izveidojiet spēli, kurā spēlētājs var pārvietoties pa kreisi un pa labi, un būs viena platforma. Izveidojiet jaunu failu ar nosaukumu simple-game.py un importēt arkādes moduli, kas nodrošina spēles izveidei nepieciešamās funkcionalitātes.
Šajā rakstā izmantotais kods ir pieejams šajā GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.
Tālāk definējiet GameWindow klase, kas ir apakšklase arkāde. Logs. GameWindow klasē definējiet __tajā__ metode, kas inicializē logu ar norādīto platumu, augstumu un nosaukumu.
The on_key_press
metode nosaka kreisās vai labās bultiņas taustiņu nospiešanu. Nospiežot pa kreisi, tiek samazināts player_x par 10 vienībām, vienlaikus nospiežot pa labi, tas palielinās par 10 vienībām. Šis ļauj spēlētājam pārvietoties horizontāli spēles logā.Lai palaistu spēli, definējiet galveno funkciju, izveidojiet GameWindow gadījumu, izsauciet iestatīšanas metodi, lai iestatītu spēles logu, un visbeidzot sāciet spēles cilpu, izmantojot arcade.run().
Taimera klases struktūras projektēšana
Lai savā spēlē ieviestu taimerus, varat izveidot Taimera klasi ar nepieciešamajiem atribūtiem un metodēm. Šī klase nodrošinās funkcijas taimera palaišanai, apturēšanai, pagājušā laika izgūšanai un taimera derīguma termiņa beigām. Lūk, Taimera klases pamatstruktūra:
imports laiks
klasēTaimeris:
def__tajā__(pats, ilgums):
self.duration = ilgums
self.start_time = 0
self.is_running = Nepatiesidefsākt(pats):
self.start_time = laiks.laiks()
self.is_running = Taisnībadefstop(pats):
self.is_running = Nepatiesidefget_elapsed_time(pats):
ja self.is_running:
atgriezties laiks.laiks() — self.start_time
atgriezties0
defir_beidzies(pats):
atgriezties self.get_elapsed_time() >= self.duration
Taimera klase aizņem a ilgums parametrs sekundēs inicializācijas laikā. Klase satur tādus atribūtus kā sākuma laiks lai saglabātu taimera palaišanas laiku, un skrien lai izsekotu taimera stāvokli.
The sākt() metode iestata sākuma_laiku uz pašreizējo laiku, izmantojot laiks.laiks() un nosaka is_running uz Taisnība. The stop () metode vienkārši nosaka is_running to Nepatiesi. The get_elapsed_time() metode aprēķina pagājušo laiku, no pašreizējā laika atņemot sākuma_laiku.
Ja taimeris darbojas, tas atgriež pagājušo laiku; pretējā gadījumā tas atgriež 0. The ir_termiņš() metode pārbauda, vai pagājušais laiks ir lielāks vai vienāds ar ilgumu, norādot, ka taimeris ir beidzies.
Atpakaļskaitīšanas taimeru ieviešana
Lai demonstrētu atpakaļskaitīšanu savā spēlē, varat palaist taimeri, kad spēlētājs nospiež noteiktu taustiņu, piemēram, atstarpes taustiņu. Izdrukājiet atpakaļskaitīšanu līdz konsolei, izmantojot Python drukas komandu. Izveidojiet jaunu failu ar nosaukumu timer.py un pievienojiet kodu ar šiem atjauninājumiem:
imports laiks
klasēGameWindow(pasāža. logs):
def__tajā__(pats):
super().__init__(WIDTH, HEIGHT, "Vienkārša spēle")
self.player_x = PLATUMS // 2
self.player_y = AUGSTUMS // 2
self.timer = Taimeris(10)defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. SPACE:
self.timer.start()
defon_draw(pats):
# Esošais kods
ja self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration — pagājušais_laiks
atlikušais_laiks = max (r_time, 0)
drukāt (f"Atpakaļskaitīšana: {atlikušais laiks:.1f} sekundes")
Pārliecinieties, vai vienlaikus redzat termināļa logu un spēles logu. Pēc tam nospiediet atstarpes taustiņu, un jūs redzēsiet taimera atpakaļskaitīšanu:
Taimera notikumu apstrāde un aktivizēšanas darbības
Varat arī aktivizēt funkciju, kas zīmē taisnstūri kad beidzas atpakaļskaitīšanas taimeris. Izveidojiet jaunu failu ar nosaukumu rokturis-notikums.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:
defon_draw(pats):
# Esošais kods
ja self.timer.is_expired():
self.draw_rectangle()
defzīmēt_taisnstūri(pats):
arcade.draw_rectangle_filled (WIDTH // 2, HEIGHT // 2, 100, 100, sarkans)
Zemāk ir izvade:
Taimera apturēšana, atiestatīšana un atsākšana
Lai pievienotu taimera apturēšanas, atiestatīšanas un atsākšanas funkcionalitāti, varat pagarināt Taimeris klasē ar atbilstošām metodēm. Šeit ir piemērs:
klasēTaimeris:
# Esošais kodsdefpauze(pats):
self.duration -= self.get_elapsed_time()
self.is_running = Nepatiesidefatiestatīt(pats):
self.start_time = 0
self.is_running = Nepatiesi
defturpināt(pats):
self.start_time = laiks.laiks()
self.is_running = Taisnība
Vizuālās atsauksmes pievienošana taimeram
Lai sniegtu vizuālu atgriezenisko saiti par taimeri, spēles ekrānā varat iekļaut tekstu vai grafiskus elementus. Izveidojiet jaunu failu ar nosaukumu visual.py un pievienojiet kodu ar tālāk norādītajiem atjauninājumiem:
defon_draw(pats):
# Esošais kods
ja self.timer.is_running:
teksts = f"Atpakaļskaitīšana: {atlikušais laiks:.1f} sekundes"
arcade.draw_text (teksts, 10, 10, melns, 18)
Tagad taimeris būs redzams tieši spēles logā, nevis konsolē:
Ieskaitot papildu funkcijas
Lai vēl vairāk uzlabotu ar laiku saistītus notikumus, varat apsvērt iespēju savās spēlēs ieviest tālāk norādītās papildu funkcijas.
Uz laiku balstīti pastiprinājumi vai bonusi
Ieviesiet jaudas palielinājumus vai bonusus, kas periodiski parādās spēles laikā. Šie pastiprinājumi varētu nodrošināt īslaicīgas spējas, papildu punktus, palielinātu ātrumu vai uzlabotus ieročus.
Padarot tos ierobežotus, spēlētājiem tie ir stratēģiski jāsavāc noteiktā laika posmā, lai iegūtu priekšrocības. Tas rada aizrautību un atalgo ātru domāšanu.
Izaicinājumi uz laiku
Izveidojiet ierobežotu laiku izaicinājumus, kuros spēlētājiem jāpaveic uzdevums noteiktā laika posmā. Piemēram, mīkla vai platformas sadaļa, kas jāatrisina noteiktā laikā.
Tas liek spēlētājiem ātri domāt un rīkoties, pievienojot spēlei aizraujošu steidzamības sajūtu. Veiksmīga šo uzdevumu izpilde var iegūt atlīdzību vai progresēt stāstu.
Laika šķēršļi vai ienaidnieki
Ieviesiet noteiktus šķēršļus vai ienaidniekus, kas apdraud spēlētāju. Piemēram, kustīgas platformas, kas regulāri parādās un pazūd, vai ienaidnieki, kas uz ierobežotu laiku kļūst neuzvarami.
Spēlētājiem ir pareizi jāplāno savas darbības un kustības, lai pārvarētu šos šķēršļus vai uzvarētu ienaidniekus, pirms ir beidzies laiks. Tas spēlei pievieno stratēģijas un koordinācijas slāni.
Laika gaitā balstītu pasākumu paraugprakse
Ieviešot spēlēs uz laiku balstītus notikumus, ir svarīgi ievērot šo paraugpraksi.
Pārbaude un līdzsvars
Rūpīgi pārbaudiet savus laika notikumus, lai nodrošinātu, ka tie ir godīgi un līdzsvaroti. Precīzi noregulējiet ilgumu, grūtības pakāpi un atlīdzības, lai radītu patīkamu spēles pieredzi.
Lietotāju atsauksmes
Sniedziet spēlētājiem skaidru un intuitīvu atgriezenisko saiti par taimera statusu un jebkuriem notikumiem, kas saistīti ar laiku. Skaņu efektu pievienošana, vizuālie indikatori vai teksta norādes var palīdzēt spēlētājiem izprast laika ierobežojumus un savu darbību sekas.
Konsekventa laika mērīšana
Izmantojiet konsekventu laika mērīšanas sistēmu visā spēlē. Piemēram, izmantojiet sekundes kā vienību visiem taimeriem un ar laiku saistītajiem aprēķiniem. Tas nodrošina konsekvenci un vieglu izpratni gan spēlētājiem, gan izstrādātājiem.
Rokturis Edge futrāļiem
Apsveriet scenārijus, kuros spēle var tikt apturēta, minimizēta vai darbojas fonā. Rīkojieties ar šīm situācijām graciozi, lai saglabātu precīzu laiku un novērstu nejaušu uzvedību, kad spēle tiek atsākta.
Ievērojot šo paraugpraksi, varat izveidot uz laiku balstītus notikumus, kas uzlabo spēli, izaicina spēlētājus un nodrošina līdzsvarotu un patīkamu pieredzi.
Padariet spēles jautrākas, izmantojot uz laiku balstītus pasākumus
Iekļaujot savās spēlēs uz laiku balstītus notikumus, jūs varat radīt dinamisku un aizraujošu pieredzi spēlētājiem. Uz laiku ierobežotas problēmas rada aizrautību un steidzamību, savukārt noteikta laika iedarbināšana vai šķēršļi var radīt stratēģisku lēmumu pieņemšanas iespējas.
Eksperimentējiet ar dažādām uz laiku balstītām mehānismiem, lai atrastu savai spēlei pareizo līdzsvaru, un neaizmirstiet veikt spēles pārbaudi un atkārtojumus, lai maksimāli palielinātu jautrību un baudījumu.