Ricerca nel sito web

Come implementare un sistema sanitario in Python Arcade


Stai cercando di perfezionare la gestione del pericolo nel tuo gioco? Trasforma le vite in salute e aggiungi una dimensione extra al tuo gameplay.

L'aggiunta di un sistema sanitario al tuo gioco arcade può migliorare l'esperienza del giocatore e aggiungere un ulteriore livello di sfida e coinvolgimento. Puoi creare un'esperienza di gioco più coinvolgente visualizzando la salute del giocatore e i meccanismi di danno e guarigione.

Fortunatamente, implementare un sistema sanitario in Python utilizzando la libreria Arcade è semplice e richiede solo pochi passaggi.

Crea un gioco semplice

Innanzitutto, installa pip sul tuo dispositivo e utilizza il comando seguente per installare la libreria arcade:

pip install arcade

Successivamente, inizia creando un gioco semplice utilizzando la libreria Arcade. Questo gioco presenterà un personaggio del giocatore che può muoversi a sinistra, a destra, su e giù e un oggetto nemico che rappresenta una minaccia per il giocatore.

Il codice utilizzato in questo articolo è disponibile in questo repository GitHub ed è utilizzabile gratuitamente con la licenza MIT.

Crea un nuovo file denominato simple-game.py e aggiungi il codice seguente:

import arcade
# Set window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# Set player movement speed
PLAYER_MOVEMENT_SPEED = 5
white = arcade.color.WHITE
blue = arcade.color.BLUE
red = arcade.color.RED
class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(white)
        # Create player and enemy objects
        self.player = arcade.SpriteCircle(30, blue)
        self.enemy = arcade.SpriteCircle(30, red)
        self.player.center_x = 100
        self.player.center_y = 100
        self.enemy.center_x = 400
        self.enemy.center_y = 300
    def on_draw(self):
        arcade.start_render()
        self.player.draw()
        self.enemy.draw()
    def update(self, delta_time):
        pass
    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player.center_x -= PLAYER_MOVEMENT_SPEED
        elif key == arcade.key.RIGHT:
            self.player.center_x += PLAYER_MOVEMENT_SPEED
        elif key == arcade.key.UP:
            self.player.center_y += PLAYER_MOVEMENT_SPEED
        elif key == arcade.key.DOWN:
            self.player.center_y -= PLAYER_MOVEMENT_SPEED
def main():
    game = GameWindow(SCREEN_WIDTH, SCREEN_HEIGHT)
    arcade.run()
if __name__ == "__main__":
    main()

Dovresti vedere una finestra contenente due caratteri, rappresentati da cerchi blu e rossi:

Definizione di variabili e costanti relative alla salute

Per implementare il sistema sanitario, definire variabili e costanti legate alla salute. Li utilizzerai per tenere traccia della salute attuale del giocatore e determinare le regole per i danni e la guarigione. Aggiungi il seguente codice all'interno della classe GameWindow:

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        # ...
        # Health-related variables and constants
        self.player_health = 100
        # Health points healed per second
        self.heal_rate = 1
        # Timer for healing
        self.heal_timer = 0
    def update(self, delta_time):
        # ...
        # Update healing timer
        self.heal_timer += delta_time
        # Heal the player's health every 2 seconds
        if self.heal_timer >= 2:
            self.player_health += self.heal_rate
            self.heal_timer = 0
        # Ensure health doesn't exceed the maximum value
        if self.player_health > 100:
            self.player_health = 100

Implementazione di meccanismi di danno e guarigione

Per implementare i meccanismi di danno e guarigione, rileva le collisioni tra il giocatore e il nemico. Riduci la salute del giocatore quando si scontra con il nemico e cura la salute del giocatore ogni 2 secondi quando non si scontra. Modifica il metodo update() e aggiungi il seguente codice:

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        # ...
    def update(self, delta_time):
        # Detect collisions between player and enemy
        if arcade.check_for_collision(self.player, self.enemy):
            self.player_health -= 5 
        # ...

Gestione degli scenari di morte e game over del giocatore

Per gestire la morte del giocatore e gli scenari di game over, controlla se la salute del giocatore raggiunge lo zero o è inferiore. Se la salute scende a zero, considera il giocatore morto e termina il gioco. Modifica il metodo update() con il seguente codice:

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        # ...
    def update(self, delta_time):
        # ...
        # Check if player health is zero or below
        if self.player_health <= 0:
            # End the game
            arcade.close_window()
        # ...

Visualizzazione della barra della salute

Una rappresentazione visiva della salute del giocatore può migliorare notevolmente l'esperienza di gioco. Crea una barra della salute utilizzando rettangoli per mostrare il livello di salute attuale. Crea un nuovo file denominato health-bar.py e aggiungi il codice con gli aggiornamenti seguenti:

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        # ...
    def on_draw(self):
        arcade.start_render()
        self.player.draw()
        self.enemy.draw()
        gray = arcade.color.LIGHT_GRAY
        green = arcade.color.GREEN
        # Draw health bar
        arcade.draw_rectangle_filled(SCREEN_WIDTH // 2, 20, 
                                     SCREEN_WIDTH, 20, gray)
        health_width = self.player_health / 100 * SCREEN_WIDTH
        arcade.draw_rectangle_filled(health_width // 2, 20, 
                                     health_width, 20, green)

Di seguito è riportato l'output:

Comprese funzionalità aggiuntive

Puoi migliorare ulteriormente il sistema sanitario con più funzionalità, come quelle di seguito.

Visualizzazione numerica della salute

Oltre alla barra della salute, puoi visualizzare la salute rimanente come valore numerico sullo schermo. Ciò fornisce un'indicazione precisa sullo stato di salute del giocatore. Aggiungi il seguente codice all'interno del metodo on_draw():

# Inside the on_draw() method
black = arcade.color.BLACK
text = f"Health: {self.player_health}"
arcade.draw_text(text, 10, 10, black, 14)

Potenziamenti della salute

Per introdurre potenziamenti della salute, puoi creare oggetti speciali che aumentano la salute del giocatore quando si scontrano con loro. Ecco un esempio di come puoi implementare questa funzionalità:

# Inside the update() method
if arcade.check_for_collision(self.player, self.power_up):
    self.player_health += 20
    # Remove the power-up from the game
    self.power_up.kill()

Vari tipi di nemici

Per aggiungere profondità al tuo gioco, puoi introdurre diversi tipi di nemici che infliggono diversi livelli di danno al giocatore. Ciò aggiunge un elemento strategico e consente esperienze di gioco più diversificate. Ecco un'implementazione di questa funzionalità:

# Inside the update() method
if arcade.check_for_collision(self.player, self.enemy):
    if self.enemy.type == "weak":
        self.player_health -= 5
    elif self.enemy.type == "strong":
        self.player_health -= 20

Incorporando queste funzionalità aggiuntive nell'implementazione del tuo sistema sanitario, puoi creare esperienze di gioco più dinamiche e stimolanti per i tuoi giocatori.

Migliori pratiche per il sistema sanitario

Quando implementi un sistema sanitario nel tuo gioco arcade, è importante seguire le migliori pratiche per garantire che il sistema sia robusto ed efficiente. Ecco alcune delle migliori pratiche da tenere a mente:

Rendilo modulare

Mantieni la funzionalità del sistema sanitario all'interno di una classe o modulo separato per mantenerlo modulare e facilmente riutilizzabile in diversi progetti di gioco. Ciò promuove l'organizzazione del codice e la separazione delle preoccupazioni.

Convalida e tutele dell'input

Implementa la convalida dell'input per evitare che il codice assegni valori di integrità non validi. Le stesse garanzie dovrebbero proteggere da valori sanitari non validi quando si verifica un danno o una guarigione.

Meccanismo di salvataggio e caricamento

Implementa un meccanismo di salvataggio e caricamento che includa lo stato di salute del giocatore. Ciò consente ai giocatori di riprendere il gioco con i propri progressi intatti, inclusa la propria salute, anche dopo essere usciti dal gioco.

Test e gestione degli errori

Testare approfonditamente l’implementazione del Sistema Sanitario per verificarne la correttezza e l’affidabilità. Utilizzare tecniche appropriate di gestione degli errori per gestire in modo efficace eccezioni e casi limite.

Feedback coerente sulla salute

Fornire al giocatore un feedback coerente e chiaro sul suo stato di salute. Puoi aggiungere effetti audio, segnali visivi o persino feedback tattile, assicurando che i giocatori conoscano le loro condizioni di salute nel gioco e possano prendere decisioni informate durante il gioco.

Seguendo queste migliori pratiche, puoi creare un sistema sanitario robusto ed efficace che migliora l'esperienza di gioco del tuo gioco arcade mantenendo la qualità e la leggibilità del codice.

Rendi i giochi più divertenti con il sistema sanitario

Aggiungere un sistema sanitario al tuo gioco può migliorare significativamente l'esperienza complessiva del giocatore. Introduce un elemento di rischio e sfida, rendendo il gameplay più coinvolgente e gratificante.

Una rappresentazione visiva della salute consente ai giocatori di valutare facilmente il proprio stato attuale, aumentando l'immersione e il processo decisionale strategico.

Articoli correlati: