Wil je het omgaan met gevaar in je spel verfijnen? Verander levens in gezondheid en voeg een extra dimensie toe aan je gameplay.
Het toevoegen van een gezondheidssysteem aan je arcadespel kan de spelerservaring verbeteren en kan een extra laag uitdaging en betrokkenheid toevoegen. Je kunt een meer meeslepende gameplay-ervaring creëren met een weergave van de gezondheid van de speler en mechanismen voor schade en genezing.
Gelukkig is het implementeren van een gezondheidssysteem in Python met behulp van de Arcade-bibliotheek eenvoudig en vereist het slechts een paar stappen.
Maak een eenvoudig spel
Eerst, installeer pip op uw apparaat en gebruik de onderstaande opdracht om de arcadebibliotheek te installeren:
pip installeer arcade
Begin daarna met het maken van een eenvoudig spel met behulp van de Arcade-bibliotheek. Deze game bevat een spelerspersonage dat naar links, rechts, omhoog en omlaag kan bewegen en een vijandelijk object dat een bedreiging vormt voor de speler.
De code die in dit artikel wordt gebruikt, is hierin beschikbaar
GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.Maak een nieuw bestand met de naam simpel-spel.py en voeg onderstaande code toe:
importeren arcade
# Raamafmetingen instellen
SCREEN_WIDTH = 800
SCHERM_HOOGTE = 600# Stel de bewegingssnelheid van de speler in
PLAYER_MOVEMENT_SPEED = 5
wit = arcade.kleur. WIT
blauw = arcade.kleur. BLAUW
rood = arcade.kleur. ROODklasGameWindow(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte)
arcade.set_background_color (wit)# Maak speler- en vijandelijke objecten
self.player = speelhal. SpriteCirkel(30, blauw)
zelf.vijand = arcade. SpriteCirkel(30, rood)
self.player.center_x = 100
self.player.center_y = 100
zelf.vijand.center_x = 400
zelf.vijand.center_y = 300defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijand.trekking()defupdate(zelf, delta_tijd):
doorgangdefon_key_press(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS:
self.player.center_x -= PLAYER_MOVEMENT_SPEED
elif sleutel == arcade.sleutel. RECHTS:
self.player.center_x += PLAYER_MOVEMENT_SPEED
elif sleutel == arcade.sleutel. OMHOOG:
self.player.center_y += PLAYER_MOVEMENT_SPEED
elif sleutel == arcade.sleutel. OMLAAG:
self.player.center_y -= PLAYER_MOVEMENT_SPEEDdefvoornaamst():
spel = GameWindow (SCREEN_WIDTH, SCREEN_HEIGHT)
speelhal.run()
als __naam__ == "__voornaamst__":
voornaamst()
Je zou een venster moeten zien met twee karakters, weergegeven door blauwe en rode cirkels:
Om het gezondheidssysteem te implementeren, definieert u variabelen en constanten met betrekking tot gezondheid. Je gebruikt ze om de huidige gezondheid van de speler bij te houden en de regels voor schade en genezing te bepalen. Voeg de volgende code toe in het GameWindow klas:
klasGameWindow(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
# ...
# Gezondheidsgerelateerde variabelen en constanten
self.player_health = 100# Gezondheidspunten genezen per seconde
self.heal_rate = 1# Timer voor genezing
self.heal_timer = 0defupdate(zelf, delta_tijd):
# ...
# Werk de genezingstimer bij
self.heal_timer += delta_time# Genees de gezondheid van de speler elke 2 seconden
als self.heal_timer >= 2:
self.player_health += self.heal_rate
self.heal_timer = 0
# Zorg ervoor dat de gezondheid de maximale waarde niet overschrijdt
als self.player_health > 100:
self.player_health = 100
Schade- en genezingsmechanismen implementeren
Om de schade- en genezingsmechanismen te implementeren, botsingen tussen de speler en de vijand detecteren. Verminder de gezondheid van de speler wanneer deze in botsing komt met de vijand en genees de gezondheid van de speler elke 2 seconden wanneer deze niet in botsing komt. Wijzig de update() methode en voeg de volgende code toe:
klasGameWindow(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
# ...defupdate(zelf, delta_tijd):
# Detecteer botsingen tussen speler en vijand
als arcade.check_for_collision (self.player, self.enemy):
self.player_health -= 5
# ...
Spelersdood en Game Over-scenario's beheren
Om sterfgevallen en game-over-scenario's van spelers te beheren, moet je controleren of de gezondheid van de speler nul of lager is. Als de gezondheid tot nul daalt, beschouw de speler dan als dood en beëindig het spel. Wijzig de update() methode met de volgende code:
klasGameWindow(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
# ...defupdate(zelf, delta_tijd):
# ...# Controleer of de gezondheid van de speler nul of lager is
als self.player_health <= 0:
# Beëindig het spel
arcade.close_window()
# ...
De gezondheidsbalk visualiseren
Een visuele weergave van de gezondheid van de speler kan de gameplay-ervaring aanzienlijk verbeteren. Maak een gezondheidsbalk met rechthoeken om het huidige gezondheidsniveau weer te geven. Maak een nieuw bestand met de naam gezondheid-bar.py en voeg de code toe met de onderstaande updates:
klasGameWindow(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
# ...defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijand.trekking()
grijs = arcade.kleur. LICHTGRIJS
groen = arcade.kleur. GROENTE# Teken gezondheidsbalk
arcade.draw_rectangle_filled (SCREEN_WIDTH // 2, 20,
SCREEN_WIDTH, 20, grijs)health_width = self.player_health / 100 * SCREEN_WIDTH
arcade.draw_rectangle_filled (gezondheidsbreedte // 2, 20,
gezondheid_breedte, 20, groente)
Hieronder is de uitvoer:
Inclusief extra functies
U kunt het gezondheidssysteem verder verbeteren met meer functies, zoals hieronder.
Numerieke gezondheidsweergave
Naast de gezondheidsbalk kunt u de resterende gezondheid als een numerieke waarde op het scherm weergeven. Dit geeft een nauwkeurige indicatie van de gezondheidsstatus van de speler. Voeg de volgende code toe in het on_draw() methode:
# Binnen de methode on_draw().
zwart = arcade.kleur. ZWART
tekst = f"Gezondheid: {zelf.speler_gezondheid}"
arcade.draw_text (tekst, 10, 10, zwart, 14)
Gezondheids-power-ups
Om power-ups voor de gezondheid te introduceren, kun je speciale objecten maken die de gezondheid van de speler verbeteren wanneer ze ermee in botsing komen. Hier is een voorbeeld van hoe u deze functie kunt implementeren:
# Binnen de update() methode
als arcade.check_for_collision (self.player, self.power_up):
self.player_health += 20
# Verwijder de power-up uit het spel
zelf.power_up.kill()
Gevarieerde soorten vijanden
Om diepte aan je spel toe te voegen, kun je verschillende soorten vijanden introduceren die verschillende niveaus van schade toebrengen aan de speler. Dit voegt een strategisch element toe en zorgt voor meer diverse gameplay-ervaringen. Hier is een implementatie van deze functie:
# Binnen de update() methode
als arcade.check_for_collision (self.player, self.enemy):
als zelf.vijand.type == "zwak":
self.player_health -= 5
elif zelf.vijand.type == "sterk":
self.player_health -= 20
Door deze extra functies op te nemen in de implementatie van uw gezondheidssysteem, kunt u meer dynamische en uitdagende gameplay-ervaringen voor uw spelers creëren.
Beste praktijken voor het gezondheidssysteem
Bij het implementeren van een gezondheidssysteem in je arcadespel is het belangrijk om best practices te volgen om ervoor te zorgen dat het systeem robuust en efficiënt is. Hier zijn enkele van de best practices om in gedachten te houden:
Maak het modulair
Houd de functionaliteit van het gezondheidssysteem binnen een aparte klasse of module om het modulair en gemakkelijk herbruikbaar te houden voor verschillende gameprojecten. Dit bevordert codeorganisatie en scheiding van zorgen.
Inputvalidatie en waarborgen
Implementeer invoervalidatie om te voorkomen dat uw code ongeldige gezondheidswaarden toewijst. Dezelfde waarborgen moeten beschermen tegen ongeldige gezondheidswaarden wanneer schade of genezing optreedt.
Opslaan en laden mechanisme
Implementeer een opslag- en laadmechanisme dat de gezondheidsstatus van de speler omvat. Hierdoor kunnen spelers het spel hervatten met hun voortgang intact, inclusief hun gezondheid, zelfs nadat ze het spel hebben verlaten.
Testen en foutafhandeling
Test de implementatie van het gezondheidssysteem grondig om de juistheid en betrouwbaarheid ervan te verifiëren. Gebruik de juiste technieken voor foutafhandeling om uitzonderingen en randgevallen effectief af te handelen.
Consistente gezondheidsfeedback
Geef consistente en duidelijke feedback aan de speler over zijn gezondheidsstatus. U kunt audio-effecten toevoegen, visuele aanwijzingen of zelfs haptische feedback, zodat spelers hun gezondheidstoestand in het spel kennen en weloverwogen beslissingen kunnen nemen tijdens het spelen.
Door deze best practices te volgen, kunt u een robuust en effectief gezondheidssysteem creëren dat de gameplay-ervaring van uw arcadespel verbetert terwijl de kwaliteit en leesbaarheid van de code behouden blijft.
Maak games leuker met het gezondheidssysteem
Het toevoegen van een gezondheidssysteem aan je game kan de algehele spelerservaring aanzienlijk verbeteren. Het introduceert een element van risico en uitdaging, waardoor de gameplay boeiender en lonender wordt.
Een visuele weergave van gezondheid stelt spelers in staat om eenvoudig hun huidige status te beoordelen, waardoor de onderdompeling en strategische besluitvorming toenemen.