Õppige aega mõõtma ja kasutama seda oma mängu erinevate aspektide juhtimiseks.
Mänguarenduses võib ajapõhiste sündmuste lisamine oluliselt parandada mängumehaanikat ja muuta mängud mängijate jaoks köitvamaks. Taimereid lisades saate esitada väljakutseid, luua ajaliselt piiratud eesmärke või lisada teatud mänguelementidele kiireloomulisuse tunnet.
Looge lihtne mäng
Alustage lihtsa mängu loomisega, et mõista põhitõdesid. Ehitage mäng, kus mängija saab liikuda vasakule ja paremale ning seal on üks platvorm. Looge uus fail nimega lihtne-mäng.py ja importige arkaadmoodul, mis pakub mängu loomiseks vajalikke funktsioone.
Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
Järgmisena määratlege Mänguaken klass, mis on alamklass arkaad. Aken. Määrake GameWindow klassis __selles__ meetod, mis lähtestab akna määratud laiuse, kõrguse ja pealkirjaga.
The on_key_press meetod tuvastab vasak- või paremnooleklahvivajutused. Vasakule vajutamine väheneb
mängija_x 10 ühiku võrra, samal ajal kui vajutate paremale, suurendab see 10 ühiku võrra. See võimaldab mängijal liikuda horisontaalselt mänguaknas.Mängu käivitamiseks määrake põhifunktsioon, looge GameWindow eksemplar, helistage mänguakna seadistamiseks häälestusmeetodile ja lõpuks käivitage mängutsükkel kasutades arcade.run().
Taimerklassi struktuuri kujundamine
Taimerite rakendamiseks oma mängus saate luua Taimer klassi vajalike atribuutide ja meetoditega. See klass pakub funktsioone taimeri käivitamiseks, peatamiseks, kulunud aja otsimiseks ja taimeri aegumise kontrollimiseks. Siin on Taimeri klassi põhistruktuur:
importida aega
klassTaimer:
def__selles__(ise, kestus):
ise.kestus = kestus
self.start_time = 0
self.is_running = Valedefalustada(ise):
self.start_time = aeg.aeg()
self.is_running = Tõsidefpeatus(ise):
self.is_running = Valedefsaada_kulunud_aeg(ise):
kui self.is_running:
tagasi aeg.aeg() - ise.alguse_aeg
tagasi0
defon_aegunud(ise):
tagasi ise.get_elapsed_time() >= ise.kestus
Taimeri klass võtab a kestus parameeter sekundites initsialiseerimise ajal. Klass sisaldab selliseid atribuute nagu algusaeg et salvestada taimeri käivitumise kellaaeg ja jookseb taimeri oleku jälgimiseks.
The start () meetod määrab start_time praeguseks kellaajaks kasutades aeg.aeg() ja seab is_running to Tõsi. The stop () meetod määrab lihtsalt is_running väärtuseks Vale. The get_elapsed_time() meetod arvutab kulunud aja, lahutades praegusest kellaajast stardiaja.
Kui taimer töötab, tagastab see kulunud aja; vastasel juhul tagastab see 0. The on_aegunud() meetod kontrollib, kas kulunud aeg on pikem või võrdne kestusega, mis näitab, et taimer on aegunud.
Taimerite rakendamine
Pöördloenduse demonstreerimiseks mängus võite käivitada taimeri, kui mängija vajutab teatud klahvi, näiteks tühikuklahvi. Printige Pythoni prindikäsku kasutades konsooli pöördloendus. Looge uus fail nimega taimer.py ja lisage kood koos nende värskendustega:
importida aega
klassMänguaken(arkaad. aken):
def__selles__(ise):
super().__init__(WIDTH, HEIGHT, "Lihtne mäng")
self.player_x = LAIUS // 2
self.player_y = HEIGHT // 2
self.timer = Taimer(10)defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. RUUM:
self.timer.start()
defon_draw(ise):
# Olemasolev kood
kui self.timer.is_running:
kulunud_aeg = self.timer.get_elapsed_time()
r_time = self.timer.duration – kulunud_aeg
järelejäänud_aeg = max (r_time, 0)
print(f"Tagasiloendus: {järelejäänud aeg:.1f} sekundit")
Veenduge, et näete terminali ja mängu akent korraga. Seejärel vajutage tühikuklahvi ja näete taimeri loendurit:
Taimeri sündmuste käsitlemine ja käivitustoimingud
Samuti saate käivitada funktsiooni, mis joonistab ristküliku kui taimer aegub. Looge uus fail nimega käepide-sündmus.py ja lisage kood koos allolevate värskendustega:
defon_draw(ise):
# Olemasolev kood
kui self.timer.is_expired():
self.draw_rectangle()
defjoonista_ristkülik(ise):
arcade.draw_rectangle_filled (WIDTH // 2, HEIGHT // 2, 100, 100, punane)
Allpool on väljund:
Taimeri peatamine, lähtestamine ja jätkamine
Funktsioonide lisamiseks taimeri peatamiseks, lähtestamiseks ja jätkamiseks saate seda pikendada Taimer klassi sobivate meetoditega. Siin on näide:
klassTaimer:
# Olemasolev kooddefpaus(ise):
self.duration -= self.get_elapsed_time()
self.is_running = Valedeflähtestada(ise):
self.start_time = 0
self.is_running = Vale
defJätka(ise):
self.start_time = aeg.aeg()
self.is_running = Tõsi
Taimerile visuaalse tagasiside lisamine
Taimerile visuaalse tagasiside andmiseks saate mänguekraanile lisada teksti või graafilisi elemente. Looge uus fail nimega visual.py ja lisage kood koos allolevate värskendustega:
defon_draw(ise):
# Olemasolev kood
kui self.timer.is_running:
tekst = f"Tagasiloendus: {järelejäänud aeg:.1f} sekundit"
arcade.draw_text (tekst, 10, 10, must, 18)
Taimerit näete nüüd konsooli asemel otse mänguaknas:
Kaasa arvatud lisafunktsioonid
Ajapõhiste sündmuste edasiseks täiustamiseks võite kaaluda järgmiste lisafunktsioonide rakendamist oma mängudes.
Ajapõhised võimendused või boonused
Tutvustage võimsusi või boonuseid, mis ilmuvad perioodiliselt kogu mängu jooksul. Need võimsused võivad pakkuda ajutisi võimeid, lisapunkte, suuremat kiirust või täiustatud relvi.
Muutes need ajaliselt piiratud, peavad mängijad eelise saamiseks need strateegiliselt koguma kindla aja jooksul. See lisab põnevust ja premeerib kiiret mõtlemist.
Ajaliselt piiratud väljakutsed
Looge ajaliselt piiratud väljakutseid, kus mängijad peavad teatud aja jooksul ülesande täitma. Näiteks pusle või platvormi sektsioon, mis vajab lahendamist etteantud aja jooksul.
See paneb mängijad kiiresti mõtlema ja tegutsema, lisades mängule haarava kiireloomulisuse tunde. Nende väljakutsete edukas täitmine võib avada auhindu või lugu edasi arendada.
Ajastatud takistused või vaenlased
Rakendage ajastatud takistusi või vaenlasi, mis kujutavad mängijat ohtu. Näiteks liikuvad platvormid, mis ilmuvad ja kaovad korrapäraste ajavahemike järel, või vaenlased, mis muutuvad piiratud aja jooksul võitmatuks.
Mängijad peavad oma tegevused ja liigutused õigesti ajastama, et nendel takistustel navigeerida või vaenlasi võita enne, kui aeg otsa saab. See lisab mängule strateegia ja koordinatsioonikihi.
Ajapõhiste sündmuste parimad tavad
Ajapõhiste sündmuste rakendamisel oma mängudes on oluline järgida neid parimaid tavasid.
Test ja tasakaal
Testige oma ajapõhiseid sündmusi põhjalikult, et tagada nende õiglus ja tasakaalustatus. Mõnusate mängukogemuste loomiseks viimistlege kestust, raskusastet ja preemiaid.
Kasutajate tagasiside
Andke mängijatele selget ja intuitiivset tagasisidet taimeri oleku ja ajapõhiste sündmuste kohta. Heliefektide lisamine, visuaalsed indikaatorid või tekstilised vihjed võivad aidata mängijatel mõista ajapiiranguid ja oma tegevuse tagajärgi.
Järjepidev aja mõõtmine
Kasutage kogu mängu jooksul ühtset ajamõõtmissüsteemi. Näiteks kasutage kõigi taimerite ja ajaga seotud arvutuste ühikuna sekundeid. See tagab järjepidevuse ja arusaadavuse nii mängijatele kui ka arendajatele.
Käsitsege Edge-kaste
Kaaluge stsenaariume, kus mäng võib olla peatatud, minimeeritud või taustal käimas. Käsitsege neid olukordi nõtkelt, et säilitada täpne ajastus ja vältida mängu jätkumisel soovimatut käitumist.
Neid parimaid tavasid järgides saate luua ajapõhiseid sündmusi, mis täiustavad mängimist, esitavad mängijatele väljakutseid ning pakuvad tasakaalustatud ja nauditava kogemuse.
Muutke mängud lõbusamaks ajapõhiste sündmustega
Lisades oma mängudesse ajapõhiseid sündmusi, saate luua mängijatele dünaamilise ja kaasahaarava kogemuse. Ajaliselt piiratud väljakutsed lisavad põnevust ja kiireloomulisust, samas kui ajastatud võimsused või takistused võivad luua strateegilisi otsustusvõimalusi.
Katsetage erinevate ajapõhiste mehaanikatega, et leida oma mängu jaoks õige tasakaal, ning pidage meeles, et testige ja korrake, et maksimeerida lõbu ja naudingut.