Répondre aux entrées est vital pour tout jeu, et il est bon de prendre en charge le clavier pour les utilisateurs qui le préfèrent. Découvrez comment avec la bibliothèque d'arcade de Python.
La saisie au clavier est une partie essentielle du développement de jeux, et il est crucial de la gérer efficacement pour offrir une expérience utilisateur exceptionnelle. La bibliothèque Arcade fournit un moyen simple et efficace de gérer la saisie au clavier dans vos jeux Python.
Créer un jeu simple avec un joueur
Vous pouvez trouver le code complet dans ce dépôt GitHub.
Avant de plonger dans la gestion des entrées au clavier, assurez-vous d'avoir pip installé sur votre appareil. Utilisez cette commande pour installer la bibliothèque d'arcade :
pip installer arcade
Après cela, créez le squelette d'un jeu simple :
importer arcade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480classeMon jeu(arcade. Fenêtre):
définitivement__init__(soi, largeur, hauteur):
super().__init__(largeur, hauteur, "Mon jeu")
arcade.set_background_color (arcade.color. BLANC)définitivementon_draw(soi):
arcade.start_render()définitivementmise à jour(soi, delta_time):
passer
Mon jeu (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
Cela crée une fenêtre avec un fond blanc. Ensuite, ajoutez un joueur à votre jeu :
classeJoueur:
définitivement__init__(soi, x, y):
soi.x = x
soi.y = y
auto.vitesse = 5
self.rayon = 20définitivementdessiner(soi):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. BLEU)définitivementse déplacer à gauche(soi):
self.x -= self.speeddéfinitivementdéplacer vers la droite(soi):
soi.x += soi.vitessedéfinitivementdéplacer vers le haut(soi):
self.y += self.speed
définitivementmove_down(soi):
self.y -= self.speed
Cela crée un joueur simple avec un cercle bleu. Vous pouvez ajouter ce joueur à votre jeu en modifiant le Mon jeu classe:
importer arcade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480classeMon jeu(arcade. Fenêtre):
définitivement__init__(soi, largeur, hauteur):
super().__init__(largeur, hauteur, "Mon jeu")
arcade.set_background_color (arcade.color. BLANC)
self.player = Joueur (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)définitivementon_draw(soi):
arcade.start_render()
self.player.draw()définitivementmise à jour(soi, delta_time):
passerdéfinitivementprincipal():
Mon jeu (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
si __nom__ == "__principal__":
principal()
Vous avez maintenant un joueur dans votre jeu que vous pouvez dessiner sur l'écran.
Répondre aux pressions et aux relâchements de touches
Pour répondre aux entrées de l'utilisateur dans votre jeu, vous devez gérer les pressions et les relâchements de touches. La bibliothèque Arcade fournit deux méthodes pour gérer ces événements: on_key_press et on_key_release.
Pour utiliser ces méthodes, vous devez les définir dans votre arcade. Fenêtre sous-classe. Lorsque le joueur appuie ou relâche une touche, arcade exécutera la méthode correspondante en lui passant deux arguments: key et modifiers. clé est un entier représentant le code de la touche enfoncée ou relâchée. modificateurs est un champ de bits représentant toutes les touches de modification sur lesquelles le joueur a également appuyé, comme Shift ou Control.
Voici un exemple de la façon de répondre à une pression sur une touche dans votre jeu :
classeMon jeu(arcade. Fenêtre):
définitivementon_key_press(soi, clé, modificateurs):
si clé == arcade.clé. GAUCHE:
# Déplacer le joueur vers la gauche
elif clé == arcade.clé. DROITE:
# Déplacer le joueur vers la droite
elif clé == arcade.clé. EN HAUT:
# Déplacer le joueur vers le haut
elif clé == arcade.clé. BAS:
# Déplacer le joueur vers le bas
Pour répondre aux communiqués de clé, vous pouvez définir le on_key_release méthode de la même manière :
classeMon jeu(arcade. Fenêtre):
définitivementon_key_release(soi, clé, modificateurs):
si clé == arcade.clé. GAUCHE:
# Arrêtez de déplacer le joueur vers la gauche
elif clé == arcade.clé. DROITE:
# Arrêtez de déplacer le joueur vers la droite
elif clé == arcade.clé. EN HAUT:
# Arrêtez de déplacer le joueur vers le haut
elif clé == arcade.clé. BAS:
# Arrêtez de déplacer le joueur vers le bas
Il est important de noter que la capture entrée utilisateur dans pygame nécessite une vérification manuelle des événements dans votre boucle de jeu. D'autre part, la bibliothèque Arcade invoque automatiquement les méthodes pertinentes lorsque le joueur appuie ou relâche une touche. Cela signifie que vous n'avez pas à vérifier manuellement les événements clés dans votre boucle de jeu, ce qui vous évite les tracas de code supplémentaire.
Personnalisation de la gestion des entrées du clavier pour répondre aux besoins de votre jeu
La bibliothèque Arcade propose de nombreuses façons de personnaliser la saisie au clavier. Vous voudrez peut-être modifier les raccourcis clavier de votre jeu ou autoriser le joueur à personnaliser ses propres raccourcis clavier.
Vous pouvez le faire en définissant un dictionnaire key_map qui mappe chaque clé à la méthode correspondante de l'objet joueur. Pour permettre au joueur de personnaliser ses raccourcis clavier, vous pouvez ajouter un menu de paramètres qui modifie le key_map dictionnaire basé sur les préférences du joueur.
Voici un exemple :
classeMon jeu(arcade. Fenêtre):
définitivement__init__(soi, largeur, hauteur, titre):
super().__init__(largeur, hauteur, titre)
self.player = Joueur(100, 100)self.key_map = {
arcade.key. GAUCHE: self.player.move_left,
arcade.key. DROITE: self.player.move_right,
arcade.key. HAUT: self.player.move_up,
arcade.key. BAS: self.player.move_down
}définitivementon_key_press(soi, clé, modificateurs):
si clé dans self.key_map :
self.key_map[clé]()
définitivementon_key_release(soi, clé, modificateurs):
si clé dans self.key_map :
self.key_map[clé + 1]()
Répondre aux entrées de l'utilisateur en temps réel
Répondre aux entrées des utilisateurs en temps réel est un aspect essentiel de la création d'un jeu attrayant. En prenant le temps de gérer correctement la saisie au clavier dans votre jeu, vous pouvez créer un environnement plus engageant et expérience immersive pour vos joueurs, et finalement faire ressortir votre jeu dans un monde bondé marché.