Hvad er meningen med et spil uden en scoring? Nogle kan undvære, men de fleste spil, du laver, skal fortælle spilleren, hvor godt de klarer sig.

Resultater er en integreret del af mange spil, da de giver et mål for fremskridt og præstationer for spillere.

I Python tilbyder Arcade-biblioteket en enkel og effektiv måde at administrere scores i spil. Ved effektivt at administrere scores kan du øge brugerengagementet og give en mere fordybende spiloplevelse.

Opret et simpelt spil

Før du starter, skal du sikre dig, at du har pip installeret på din enhed. Brug denne kommando til at installere arkadebiblioteket:

pip installere arkade

Opret nu et simpelt spil ved hjælp af Pythons Arcade-bibliotek.

Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.

I dette spil kan spilleren bevæge sig til venstre og højre ved hjælp af piletasterne, mens en forhindring er placeret på den samme y-akse.

importere arkade

# Indstil vinduesdimensioner
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde)
self.player_x = bredde // 3
selv.score = 0

defon_key_press(selv, nøgle, modifikatorer):
hvis nøgle == arkade.nøgle. VENSTRE:
self.player_x -= 10
elif nøgle == arkade.nøgle. HØJRE:
self.player_x += 10

defopdatering(selv, delta_tid):
# Opdater spillogikken her
passere

defon_draw(selv):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arkade.farve. BLÅ)
arcade.draw_rectangle_filled(400, 50, 100, 50, arkade.farve. RØD)

defvigtigste():
spil = Mit spil (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

hvis __navn__ == "__main__":
hoved()

Scoresporing og beregning

For at spore scoren i dit spil kan du oprette en mekanisme til at øge scoren, når en bestemt betingelse er opfyldt. For eksempel stiger scoren hver gang spillerens bevægelser i dit spil og rører med succes forhindringen. Du kan ændre opdatering metode til at inkludere scoreberegningslogik:

klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde)
self.player_x = bredde // 3
selv.score = 0

defon_key_press(selv, nøgle, modifikatorer):
hvis nøgle == arkade.nøgle. VENSTRE:
self.player_x -= 10
elif nøgle == arkade.nøgle. HØJRE:
self.player_x += 10

defopdatering(selv, delta_tid):
hvis self.player_x > 330og self.player_x < 470:
self.score += 1

Viser scoren

For at vise partituret for spilleren skal du ændre on_draw metode til at inkludere en tekstgengivelse:

klasseMit Spil(arkade. Vindue):
# ...

defon_draw(selv):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, 50, 20, arkade.farve. BLÅ)
arcade.draw_rectangle_filled(400, 300, 100, 50, arkade.farve. RØD)

score_tekst = f"Score: {selv.score}"
arcade.draw_text (score_text, 10, 10, arkade.farve. HVID, 14)

Ved at tilføje ovenstående kode kan du få vist scoren i nederste venstre hjørne af spilvinduet.

Lagring af den højeste score

For at give spillerne en følelse af præstation og konkurrence, er det vigtigt at gemme og vise den høje score. Du kan bruge en simpel filbaseret tilgang til dette.

Brug load_high_score metode til at læse den højeste score fra en fil kaldet high_score.txt og returnere den. Derefter kan du gemme den nye high score i filen ved hjælp af save_high_score metode.

klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde)
self.player_x = bredde // 3
selv.score = 0
self.high_score = self.load_high_score()

defload_high_score(selv):
prøve:
med åben("high_score.txt", "r") som fil:
Vend tilbage int (file.read())
undtagen FileNotFoundError:
Vend tilbage0

defsave_high_score(selv):
med åben("high_score.txt", "w") som fil:
file.write (str (selv.høj_score))

defopdatering(selv, delta_tid):
# ...

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

Viser høj score

På samme måde som at vise den aktuelle score, kan du tilføje en tekstgengivelse for at vise den højeste score:

klasseMit Spil(arkade. Vindue):
# ...

defon_draw(selv):
# ...

høj_score_tekst = f"Høj score: {self.high_score}"
arcade.draw_text (high_score_text, 10, 30, arkade.farve. HVID, 14)

Ved at inkludere ovenstående kode i on_draw metode, kan du vise den høje score lige over den aktuelle score.

Inklusiv yderligere funktioner

Styring af scores i spil involverer ofte inkorporering af yderligere funktioner for at gøre gameplayet mere engagerende og dynamisk. Lad os udforske nogle eksempler på, hvordan du kan introducere yderligere funktioner sammen med scorestyring i dit spil.

Power-ups

Power-ups er specielle genstande, der giver spillere midlertidige fordele eller bonuspoint. Opret en activate_power_up metode, der udløser aktiveringen af ​​power-up, indstilling af power_up_active flag til Sand.

Du kan planlægge deactivate_power_up metode til at køre efter en bestemt varighed (f.eks. 10 sekunder) ved hjælp af arcade.schedule fungere. Under opstartens aktive periode kan du bruge anvende_power_up_effekter metode til at implementere specifikke spilforbedringer.

Her er et eksempel på implementering af en power-up-funktion i dit spil.

klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde)
self.player_x = bredde // 3
selv.score = 0
self.power_up_active = Falsk

defopdatering(selv, delta_tid):
hvis self.power_up_active:
# Anvend power-up-effekter under gameplay
self.apply_power_up_effects()
self.score += 10

defanvende_power_up_effekter(selv):
# Tilføj opstartsspecifik logik her
passere

defactivate_power_up(selv):
self.power_up_active = Rigtigt
# Indstil en timer eller varighed for opstartseffekten
arcade.schedule (self.deactivate_power_up, 10.0)

defdeactivate_power_up(selv, delta_tid):
self.power_up_active = Falsk

Combo system

Et kombinationssystem belønner spillere for at opnå successive handlinger eller scoremultiplikatorer. Opret en forøge_kombitæller metode, der øger kombinationstælleren og øger scoren baseret på det aktuelle kombinationsniveau.

Du kan ringe til reset_combo_counter metoden og nulstil kombitælleren tilbage til nul, når der sker en mislykket handling. Her er en simpel implementering af et kombinationssystem:

klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde)
self.player_x = bredde // 3
selv.score = 0
self.combo_counter = 0

defopdatering(selv, delta_tid):
# Tjek for vellykkede handlinger
hvis self.check_successful_action():
self.increase_combo_counter()
andet:
self.reset_combo_counter()

defforøge_kombitæller(selv):
self.combo_counter += 1
self.score += self.combo_counter

defreset_combo_counter(selv):
self.combo_counter = 0

Ved at inkorporere yderligere funktioner såsom power-ups og combo-systemer, kan du tilføje dybde og spænding til dit spil, give spillere ekstra incitamenter til at forbedre deres præstationer, strategisere deres handlinger og opnå højere scoringer.

Bedste praksis for scorestyring

Når det kommer til at administrere scores i spil, kan det at følge bedste praksis hjælpe med at skabe en mere behagelig og engagerende oplevelse for spillerne. Her er nogle vigtige praksisser at overveje:

Meningsfulde scoringsmekanismer

Design scoringsmekanismer, der stemmer overens med spillets mål og giver meningsfuld feedback til spillerne. Scoringssystemet skal afspejle spillerens fremskridt, færdigheder og præstationer i spillet.

Overvej at tildele forskellige pointværdier til forskellige handlinger eller begivenheder baseret på deres vanskeligheder eller betydning for gameplayet.

Visuel feedback

Giv spillerne visuel feedback, når scoren ændres. Du kan opnå dette gennem meddelelser på skærmen, animationer eller partikeleffekter. Visuelle signaler skaber en følelse af præstation og forstærker spillerens handlinger, hvilket øger deres engagement i spillet.

Lydeffekter og animationer

Indarbejde lydeffekter i dit spil relateret til scoreopdateringer for at gøre oplevelsen mere fordybende. Spil for eksempel en festlig lydeffekt eller vis en byge af konfetti, når spilleren når en væsentlig milepæl. Disse audiovisuelle elementer tilføjer spænding og forstærker den positive feedback-loop for spillere.

Balanceringssværhedsgrad og scoreskalering

Sikre et afbalanceret forhold mellem sværhedsgrad og scoreskalering. Efterhånden som spillere kommer videre gennem spillet eller støder på mere udfordrende forhindringer, skal du justere scoringssystemet i overensstemmelse hermed. Skalering af score baseret på spillets sværhedsgradskurve hjælper med at opretholde en retfærdig og givende oplevelse for spillerne.

Ved at følge disse bedste fremgangsmåder kan du effektivt administrere dit spils resultater, give spillerne meningsfuld feedback og skabe en givende og engagerende oplevelse.

Forbedre spilengagementet med scoresporing

Ved at implementere scoresporing i dit spil kan du forbedre spillerengagementet betydeligt. Scores giver en følelse af præstation, tilskynder til genspilbarhed og fremmer konkurrence blandt spillere.

Vis resultater fremtrædende og belønner høje præstationer - du vil motivere spillere til at stræbe efter bedre præstationer og forbedre deres færdigheder.