Ce rost are un joc fără scor? Unii se pot descurca fără, dar majoritatea jocurilor pe care le vei crea vor trebui să-i spună jucătorului cât de bine se descurcă.

Scorurile sunt o parte integrantă a multor jocuri, deoarece oferă o măsură a progresului și a realizării jucătorilor.

În Python, biblioteca Arcade oferă o modalitate simplă și eficientă de a gestiona scorurile în jocuri. Prin gestionarea eficientă a scorurilor, puteți spori implicarea utilizatorilor și puteți oferi o experiență de joc mai captivantă.

Creați un joc simplu

Înainte de a începe, asigurați-vă că aveți pip instalat pe dispozitivul dvs. Utilizați această comandă pentru a instala biblioteca arcade:

pip install arcade

Acum, creați un joc simplu folosind biblioteca Arcade a lui Python.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

În acest joc, jucătorul se poate deplasa la stânga și la dreapta folosind tastele săgeți, în timp ce un obstacol este plasat pe aceeași axă y.

instagram viewer
import arcadă

# Configurați dimensiunile ferestrei
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.player_x = latime // 3
self.score = 0

defon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. STÂNGA:
self.player_x -= 10
elif cheie == arcade.key. DREAPTA:
self.player_x += 10

defActualizați(self, delta_time):
# Actualizați logica jocului aici
trece

defon_draw(de sine):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arcade.color. ALBASTRU)
arcade.draw_rectangle_filled(400, 50, 100, 50, arcade.color. ROȘU)

defprincipal():
joc = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

dacă __nume__ == "__principal__":
principal()

Urmărirea și calculul scorurilor

Pentru a urmări scorul din joc, puteți crea un mecanism pentru a crește scorul ori de câte ori este îndeplinită o anumită condiție. De exemplu, scorul crește ori de câte ori jucătorul se mișcă în jocul tău și atinge cu succes obstacolul. Puteți schimba Actualizați metoda de a include logica de calcul a punctajului:

clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.player_x = latime // 3
self.score = 0

defon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. STÂNGA:
self.player_x -= 10
elif cheie == arcade.key. DREAPTA:
self.player_x += 10

defActualizați(self, delta_time):
dacă self.player_x > 330și self.player_x < 470:
self.score += 1

Afișarea scorului

Pentru a afișa scorul jucătorului, modificați on_draw metoda de a include o redare a textului:

clasăJocul meu(arcadă. Fereastră):
# ...

defon_draw(de sine):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arcade.color. ALBASTRU)
arcade.draw_rectangle_filled(400, 300, 100, 50, arcade.color. ROȘU)

scor_text = f"Scor: {self.score}"
arcade.draw_text (score_text, 10, 10, arcade.color. ALB, 14)

Adăugând codul de mai sus, puteți afișa scorul în colțul din stânga jos al ferestrei jocului.

Stocarea scorului ridicat

Pentru a oferi jucătorilor un sentiment de realizare și competiție, este esențial să stocați și să afișați scorul cel mai mare. Puteți utiliza o abordare simplă bazată pe fișiere pentru aceasta.

Folosește load_high_score metoda de a citi scorul mare dintr-un fișier numit scor_înalt.txt si returneaza-l. După aceea, puteți salva noul scor mare în fișier folosind salvare_scor_înalt metodă.

clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.player_x = latime // 3
self.score = 0
self.high_score = self.load_high_score()

defload_high_score(de sine):
încerca:
cu deschis(„high_score.txt”, "r") la fel de fişier:
întoarcere int (file.read())
cu exceptia FileNotFoundError:
întoarcere0

defsalvare_scor_înalt(de sine):
cu deschis(„high_score.txt”, "w") la fel de fişier:
file.write (str (self.high_score))

defActualizați(self, delta_time):
# ...

dacă self.score > self.high_score:
self.high_score = self.score
self.save_high_score()

Se afișează scorul ridicat

Similar cu afișarea scorului curent, puteți adăuga o redare a textului pentru a afișa scorul cel mai mare:

clasăJocul meu(arcadă. Fereastră):
# ...

defon_draw(de sine):
# ...

text_score_înalt = f"Scor mare: {self.high_score}"
arcade.draw_text (high_score_text, 10, 30, arcade.color. ALB, 14)

Prin includerea codului de mai sus în on_draw metoda, puteți afișa scorul mare chiar deasupra scorului curent.

Inclusiv caracteristici suplimentare

Gestionarea scorurilor în jocuri implică adesea încorporarea de funcții suplimentare pentru a face jocul mai captivant și mai dinamic. Să explorăm câteva exemple despre cum puteți introduce funcții suplimentare alături de gestionarea scorurilor în jocul dvs.

Power ups

Power-up-urile sunt obiecte speciale care oferă jucătorilor avantaje temporare sau puncte bonus. Creaza un activate_power_up metoda care declanșează activarea pornirii, setarea power_up_active steag la Adevărat.

Puteți programa deactivate_power_up metoda de a rula după o anumită durată (de exemplu, 10 secunde) folosind arcade.program funcţie. În timpul perioadei active a pornirii, puteți utiliza apply_power_up_effects metodă de implementare a îmbunătățirilor specifice ale jocului.

Iată un exemplu de implementare a unei funcții de pornire în jocul tău.

clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.player_x = latime // 3
self.score = 0
self.power_up_active = Fals

defActualizați(self, delta_time):
dacă self.power_up_active:
# Aplicați efecte de pornire în timpul jocului
self.apply_power_up_effects()
self.score += 10

defapply_power_up_effects(de sine):
# Adăugați aici logica specifică de pornire
trece

defactivate_power_up(de sine):
self.power_up_active = Adevărat
# Setați un cronometru sau o durată pentru efectul de pornire
arcade.schedule (self.deactivate_power_up, 10.0)

defdeactivate_power_up(self, delta_time):
self.power_up_active = Fals

Sistem combinat

Un sistem combo recompensează jucătorii pentru acțiuni succesive consecutive sau multiplicatori de scor. Creaza un contor_combo_augment metodă care crește contorul combo și crește scorul pe baza nivelului combo actual.

Puteți apela la reset_combo_counter metoda și resetați contorul combo la zero ori de câte ori are loc o acțiune nereușită. Iată o implementare simplă a unui sistem combo:

clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.player_x = latime // 3
self.score = 0
self.combo_counter = 0

defActualizați(self, delta_time):
# Verificați dacă există acțiuni de succes
dacă self.check_successful_action():
self.increase_combo_counter()
altfel:
self.reset_combo_counter()

defcontor_combo_augment(de sine):
self.combo_counter += 1
self.score += self.combo_counter

defreset_combo_counter(de sine):
self.combo_counter = 0

Încorporând caracteristici suplimentare, cum ar fi porniri și sisteme combo, puteți adăuga profunzime și entuziasm jocului dvs., oferind jucătorilor stimulente suplimentare pentru a-și îmbunătăți performanța, a-și elabora strategii acțiunile și a obține rezultate mai bune scoruri.

Cele mai bune practici pentru managementul scorurilor

Când vine vorba de gestionarea scorurilor în jocuri, respectarea celor mai bune practici poate ajuta la crearea unei experiențe mai plăcute și mai captivante pentru jucători. Iată câteva practici cheie de luat în considerare:

Mecanisme semnificative de notare

Proiectați mecanisme de notare care se aliniază cu obiectivele jocului și oferă feedback semnificativ jucătorilor. Sistemul de notare ar trebui să reflecte progresul, abilitățile și realizările jucătorului în cadrul jocului.

Luați în considerare atribuirea unor valori diferite de puncte diferitelor acțiuni sau evenimente în funcție de dificultatea sau importanța acestora pentru joc.

Feedback vizual

Oferiți feedback vizual jucătorilor atunci când scorul se schimbă. Puteți realiza acest lucru prin notificări pe ecran, animații sau efecte de particule. Indiciile vizuale creează un sentiment de realizare și întăresc acțiunile jucătorului, crescând implicarea acestuia în joc.

Efecte sonore și animații

Încorporați efecte sonore în jocul dvs legate de actualizările scorurilor pentru a face experiența mai captivantă. De exemplu, redați un efect sonor de sărbătoare sau afișați o explozie de confetti atunci când jucătorul atinge o piatră semnificativă. Aceste elemente audio-vizuale adaugă entuziasm și întăresc bucla de feedback pozitiv pentru jucători.

Dificultatea de echilibrare și scalarea scorului

Asigurați o relație echilibrată între dificultate și scalarea scorului. Pe măsură ce jucătorii progresează în joc sau întâlnesc obstacole mai provocatoare, ajustează sistemul de punctare în consecință. Scalarea scorului pe baza curbei de dificultate a jocului ajută la menținerea unei experiențe corecte și pline de satisfacții pentru jucători.

Respectând aceste bune practici, puteți gestiona eficient scorurile jocului dvs., puteți oferi jucătorilor feedback semnificativ și puteți crea o experiență plină de satisfacții și captivantă.

Îmbunătățiți implicarea în joc cu urmărirea scorurilor

Prin implementarea urmăririi scorurilor în jocul dvs., puteți îmbunătăți semnificativ implicarea jucătorilor. Scorurile oferă un sentiment de realizare, încurajează rejucabilitatea și favorizează competiția între jucători.

Afișați scorurile în mod vizibil și recompensați realizările înalte — îi veți motiva pe jucători să depună eforturi pentru o performanță mai bună și să-și îmbunătățească abilitățile.