Rispondere all'input è vitale per qualsiasi gioco ed è utile supportare la tastiera per gli utenti che lo preferiscono. Scopri come con la libreria arcade di Python.

L'input da tastiera è una parte essenziale dello sviluppo del gioco ed è fondamentale gestirlo in modo efficace per offrire un'esperienza utente eccezionale. La libreria Arcade fornisce un modo semplice ed efficiente per gestire l'input da tastiera nei tuoi giochi Python.

Creazione di un gioco semplice con un giocatore

Puoi trovare il codice completo in questo repository GitHub.

Prima di immergerti nella gestione degli input da tastiera, assicurati di averlo fatto pip installato nel tuo dispositivo. Usa questo comando per installare la libreria arcade:

pip installa sala giochi

Successivamente, crea lo scheletro di un semplice gioco:

importare sala giochi

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

classeIl mio gioco(sala giochi. Finestra):
def__dentro__(auto, larghezza, altezza):
super().__init__(larghezza, altezza, "Il mio gioco")
arcade.set_background_color (arcade.color. BIANCO)

instagram viewer

defon_draw(se stesso):
arcade.start_render()

defaggiornamento(self, delta_time):
passaggio

Il mio gioco (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Questo crea una finestra con uno sfondo bianco. Successivamente, aggiungi un giocatore al tuo gioco:

classeGiocatore:
def__dentro__(sé, x, y):
self.x = x
self.y = y
self.velocità = 5
self.raggio = 20

defdisegno(se stesso):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. BLU)

defmuovere a sinistra(se stesso):
self.x -= self.velocità

defvai a destra(se stesso):
self.x += self.velocità

defandare avanti(se stesso):
self.y += self.velocità

defabbassati(se stesso):
self.y -= self.velocità

Questo crea un giocatore semplice con un cerchio blu. Puoi aggiungere questo giocatore al tuo gioco modificando il file Il mio gioco classe:

importare sala giochi

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

classeIl mio gioco(sala giochi. Finestra):
def__dentro__(auto, larghezza, altezza):
super().__init__(larghezza, altezza, "Il mio gioco")
arcade.set_background_color (arcade.color. BIANCO)
self.player = Giocatore (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)

defon_draw(se stesso):
arcade.start_render()
self.player.draw()

defaggiornamento(self, delta_time):
passaggio

defprincipale():
Il mio gioco (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Se __nome__ == "__principale__":
principale()

Ora hai un giocatore nel tuo gioco che puoi disegnare sullo schermo.

Rispondere alle pressioni e ai rilasci dei tasti

Per rispondere all'input dell'utente nel tuo gioco, devi gestire le pressioni e i rilasci dei tasti. La libreria Arcade fornisce due metodi per gestire questi eventi: on_key_press E on_key_release.

Per utilizzare questi metodi, devi definirli nel tuo file sala giochi. Finestra sottoclasse. Quando il giocatore preme o rilascia un tasto, arcade eseguirà il metodo corrispondente, passandogli due argomenti: tasto e modificatori. chiave è un numero intero che rappresenta il codice del tasto premuto o rilasciato. modificatori è un campo di bit che rappresenta qualsiasi tasto modificatore premuto anche dal giocatore, come Shift o Control.

Ecco un esempio di come rispondere alla pressione di un tasto nel tuo gioco:

classeIl mio gioco(sala giochi. Finestra):
defon_key_press(self, chiave, modificatori):
Se chiave == arcade.chiave. SINISTRA:
# Sposta il giocatore a sinistra
elif chiave == arcade.chiave. GIUSTO:
# Sposta il giocatore a destra
elif chiave == arcade.chiave. SU:
# Sposta il giocatore in alto
elif chiave == arcade.chiave. GIÙ:
# Sposta il giocatore in basso

Per rispondere ai rilasci chiave, è possibile definire il file on_key_release metodo allo stesso modo:

classeIl mio gioco(sala giochi. Finestra):
defon_key_release(self, chiave, modificatori):
Se chiave == arcade.chiave. SINISTRA:
# Smetti di muovere il giocatore a sinistra
elif chiave == arcade.chiave. GIUSTO:
# Smetti di muovere il giocatore a destra
elif chiave == arcade.chiave. SU:
# Smetti di spostare il giocatore in alto
elif chiave == arcade.chiave. GIÙ:
# Smetti di muovere il giocatore verso il basso

È importante notare che la cattura input dell'utente in pygame richiede il controllo manuale degli eventi all'interno del ciclo di gioco. D'altra parte, la libreria Arcade richiama automaticamente i metodi pertinenti quando il giocatore preme o rilascia un tasto. Ciò significa che non devi controllare manualmente gli eventi chiave nel tuo ciclo di gioco, risparmiandoti il ​​fastidio di codice aggiuntivo.

Personalizzazione della gestione dell'input da tastiera per soddisfare le esigenze del tuo gioco

La libreria Arcade offre molti modi per personalizzare l'input da tastiera. Potresti voler modificare le associazioni dei tasti per il tuo gioco o consentire al giocatore di personalizzare le proprie associazioni dei tasti.

Puoi farlo definendo un dizionario key_map che associa ogni tasto al metodo corrispondente dell'oggetto giocatore. Per consentire al giocatore di personalizzare le associazioni dei tasti, è possibile aggiungere un menu delle impostazioni che modifichi il file key_map dizionario in base alle preferenze del giocatore.

Ecco un esempio:

classeIl mio gioco(sala giochi. Finestra):
def__dentro__(auto, larghezza, altezza, titolo):
super().__init__(larghezza, altezza, titolo)
self.giocatore = Giocatore(100, 100)

self.key_map = {
arcade.key. SINISTRA: self.player.move_left,
arcade.key. DESTRA: self.player.move_right,
arcade.key. SU: self.player.move_up,
arcade.key. GIÙ: self.player.move_down
}

defon_key_press(self, chiave, modificatori):
Se chiave In self.key_map:
self.key_map[chiave]()

defon_key_release(self, chiave, modificatori):
Se chiave In self.key_map:
self.key_map[tasto + 1]()

Rispondi agli input degli utenti in tempo reale

Rispondere all'input dell'utente in tempo reale è un aspetto essenziale della creazione di un gioco coinvolgente. Prendendoti il ​​tempo necessario per gestire correttamente l'input da tastiera nel tuo gioco, puoi creare un'esperienza più coinvolgente e un'esperienza coinvolgente per i tuoi giocatori e, in definitiva, fai risaltare il tuo gioco in un ambiente affollato mercato.