Õ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

instagram viewer
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 = Vale

defalustada(ise):
self.start_time = aeg.aeg()
self.is_running = Tõsi

defpeatus(ise):
self.is_running = Vale

defsaada_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 kood

defpaus(ise):
self.duration -= self.get_elapsed_time()
self.is_running = Vale

deflä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.