Koji je smisao igre bez rezultata? Neke mogu i bez toga, ali većina igara koje ćete izraditi morat će reći igraču koliko im ide.

Rezultati su sastavni dio mnogih igara jer daju mjeru napretka i postignuća igrača.

U Pythonu, biblioteka Arcade nudi jednostavan i učinkovit način upravljanja rezultatima u igrama. Učinkovitim upravljanjem rezultatima možete poboljšati angažman korisnika i pružiti impresivnije iskustvo igranja.

Stvorite jednostavnu igru

Prije početka provjerite imate li pip instaliran na vašem uređaju. Upotrijebite ovu naredbu za instaliranje biblioteke arkadnih igara:

pip instaliraj arkadu

Sada stvorite jednostavnu igru ​​pomoću Python Arcade biblioteke.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

U ovoj se igrici igrač može pomicati lijevo i desno pomoću tipki sa strelicama, dok se prepreka nalazi na istoj y-osi.

uvoz arkada

# Postavite dimenzije prozora
SCREEN_WIDTH = 800
VISINA_EKRANA = 600

razredaMoja Igra(arkada. Prozor):

instagram viewer

def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.player_x = širina // 3
self.score = 0

defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= 10
elif ključ == arkada.ključ. PRAVO:
self.player_x += 10

defAžuriraj(sam, delta_vrijeme):
# Ovdje ažurirajte logiku igre
proći

defizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arkada.boja. PLAVA)
arcade.draw_rectangle_filled(400, 50, 100, 50, arkada.boja. CRVENA)

defglavni():
igra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arkada.run()

ako __ime__ == "__glavni__":
glavni()

Praćenje rezultata i izračun

Da biste pratili rezultat u svojoj igri, možete stvoriti mehanizam za povećanje rezultata kad god se ispuni određeni uvjet. Na primjer, rezultat se povećava kad god je potezi igrača u vašoj igri i uspješno dotakne prepreku. Možete promijeniti Ažuriraj metoda za uključivanje logike izračuna rezultata:

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.player_x = širina // 3
self.score = 0

defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= 10
elif ključ == arkada.ključ. PRAVO:
self.player_x += 10

defAžuriraj(sam, delta_vrijeme):
ako self.player_x > 330i self.player_x < 470:
samo.rezultat += 1

Prikaz rezultata

Za prikaz rezultata igraču, promijenite izvlačenje metoda za uključivanje prikaza teksta:

razredaMoja Igra(arkada. Prozor):
# ...

defizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arkada.boja. PLAVA)
arcade.draw_rectangle_filled(400, 300, 100, 50, arkada.boja. CRVENA)

rezultat_tekst = f"Rezultat: {self.score}"
arcade.draw_text (score_text, 10, 10, arkada.boja. BIJELA, 14)

Dodavanjem gornjeg koda, možete prikazati rezultat u donjem lijevom kutu prozora igre.

Pohranjivanje najboljeg rezultata

Kako bi se igračima pružio osjećaj postignuća i natjecanja, bitno je pohraniti i prikazati najbolji rezultat. Za to možete koristiti jednostavan pristup koji se temelji na datotekama.

Koristiti opterećenje_visoki_rezultat metoda za čitanje najboljeg rezultata iz datoteke tzv high_score.txt i vratite ga. Nakon toga možete spremiti novi najbolji rezultat u datoteku pomoću spremi_visoki_rezultat metoda.

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.player_x = širina // 3
self.score = 0
self.high_score = self.load_high_score()

defopterećenje_visoki_rezultat(sebe):
probati:
s otvoren("high_score.txt", "r") kao datoteka:
povratak int (file.read())
osim FileNotFoundError:
povratak0

defspremi_visoki_rezultat(sebe):
s otvoren("high_score.txt", "w") kao datoteka:
file.write (str (self.high_score))

defAžuriraj(sam, delta_vrijeme):
# ...

ako self.score > self.high_score:
self.high_score = self.score
self.save_high_score()

Prikaz najboljeg rezultata

Slično prikazu trenutnog rezultata, možete dodati prikaz teksta za prikaz najboljeg rezultata:

razredaMoja Igra(arkada. Prozor):
# ...

defizvlačenje(sebe):
# ...

high_score_text = f"Najbolji rezultat: {self.high_score}"
arcade.draw_text (high_score_text, 10, 30, arkada.boja. BIJELA, 14)

Uključivanjem gornjeg koda u izvlačenje možete prikazati visoku ocjenu neposredno iznad trenutne ocjene.

Uključujući dodatne značajke

Upravljanje rezultatima u igrama često uključuje uključivanje dodatnih značajki kako bi igranje bilo privlačnije i dinamičnije. Istražimo neke primjere kako u svoju igru ​​možete uvesti dodatne značajke uz upravljanje rezultatom.

pojačanja

Pojačanja su posebni predmeti koji igračima daju privremene prednosti ili bonus bodove. Stvorite aktivirati_pojačavanje metoda koja pokreće aktivaciju napajanja, postavljanje uključivanje_aktivno označite na True.

Možete zakazati deaktiviraj_power_up metoda za pokretanje nakon određenog vremena (npr. 10 sekundi) pomoću arkada.raspored funkcija. Tijekom aktivnog razdoblja pojačanja možete koristiti primijeniti_pojačavanje_efekti metoda za implementaciju specifičnih poboljšanja igranja.

Evo primjera implementacije značajke pojačanja u vašoj igri.

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.player_x = širina // 3
self.score = 0
self.power_up_active = lažno

defAžuriraj(sam, delta_vrijeme):
ako self.power_up_active:
# Primijenite efekte pojačanja tijekom igranja
self.apply_power_up_effects()
samo.rezultat += 10

defprimijeniti_pojačavanje_efekti(sebe):
# Ovdje dodajte specifičnu logiku pojačanja
proći

defaktivirati_pojačavanje(sebe):
self.power_up_active = Pravi
# Postavite mjerač vremena ili trajanje za učinak pojačanja
arcade.schedule (self.deactivate_power_up, 10.0)

defdeaktiviraj_power_up(sam, delta_vrijeme):
self.power_up_active = lažno

Kombinirani sustav

Kombinirani sustav nagrađuje igrače za postizanje uzastopnih uspješnih akcija ili množitelja rezultata. Stvorite povećati_kombo_brojač metoda koja povećava kombinirani brojač i povećava rezultat na temelju trenutne razine kombinacije.

Možete nazvati poništi_kombo_brojač metodu i resetirajte kombinirani brojač natrag na nulu kad god se dogodi neuspješna akcija. Evo jednostavne implementacije kombiniranog sustava:

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.player_x = širina // 3
self.score = 0
self.combo_counter = 0

defAžuriraj(sam, delta_vrijeme):
# Provjerite uspješne akcije
ako self.check_successful_action():
self.increase_combo_counter()
drugo:
self.reset_combo_counter()

defpovećati_kombo_brojač(sebe):
self.combo_counter += 1
self.score += self.combo_counter

defponišti_kombo_brojač(sebe):
self.combo_counter = 0

Uključivanjem dodatnih značajki kao što su pojačanja i kombinirani sustavi, svojoj igri možete dodati dubinu i uzbuđenje, pružajući igračima dodatne poticaje da poboljšaju svoje performanse, osmisle svoje akcije i postignu više rezultati.

Najbolje prakse za upravljanje rezultatima

Kada je riječ o upravljanju rezultatima u igrama, praćenje najboljih praksi može pomoći u stvaranju ugodnijeg i privlačnijeg iskustva za igrače. Evo nekoliko ključnih praksi koje treba razmotriti:

Smisleni mehanizmi bodovanja

Dizajnirajte mehanizme bodovanja koji su usklađeni s ciljevima igre i daju značajne povratne informacije igračima. Sustav bodovanja trebao bi odražavati igračev napredak, vještinu i postignuća unutar igre.

Razmislite o dodjeljivanju različitih vrijednosti bodova različitim radnjama ili događajima na temelju njihove težine ili važnosti za igru.

Vizualna povratna informacija

Pružite vizualnu povratnu informaciju igračima kada se rezultat promijeni. To možete postići obavijestima na zaslonu, animacijama ili efektima čestica. Vizualni znakovi stvaraju osjećaj postignuća i pojačavaju radnje igrača, povećavajući njihovu uključenost u igru.

Zvučni efekti i animacije

Uključiti zvučne efekte u vašoj igri povezani s ažuriranjem rezultata kako bi iskustvo bilo impresivnije. Na primjer, pustite slavljenički zvučni efekt ili pokažite prasak konfeta kada igrač dosegne značajnu prekretnicu. Ovi audio-vizualni elementi dodaju uzbuđenje i jačaju petlju pozitivnih povratnih informacija za igrače.

Balansiranje poteškoća i skaliranje rezultata

Osigurajte uravnotežen odnos između težine i skaliranja rezultata. Kako igrači napreduju kroz igru ​​ili se susreću s izazovnijim preprekama, prilagodite sustav bodovanja u skladu s tim. Skaliranje rezultata na temelju krivulje težine igre pomaže u održavanju poštenog i korisnog iskustva za igrače.

Pridržavajući se ovih najboljih praksi, možete učinkovito upravljati rezultatima svoje igre, pružiti igračima smislene povratne informacije i stvoriti korisno i privlačno iskustvo.

Poboljšajte angažman u igri uz praćenje rezultata

Implementacijom praćenja rezultata u svojoj igri možete značajno povećati angažman igrača. Rezultati daju osjećaj postignuća, potiču ponovno igranje i potiču natjecanje među igračima.

Istaknite rezultate i nagradite visoka postignuća—motivirat ćete igrače da teže boljem učinku i poboljšaju svoje vještine.