Un petit tutoriel en langage Python pour gérer une manette de jeu :

Gestion des touches directionnelles
-> Ce code gère uniquement les touches directionnelles
# Macé Robotics
# Public Licence
import pygame # Importation de la bibliothèque Pygame pour gérer une manette
from time import sleep
import sys
# Initialisation de Pygame pour préparer à l'utilisation de ses modules.
pygame.init()
# Compte le nombre de manettes connectées à l'ordinateur.
joystick_count = pygame.joystick.get_count()
# Vérification si aucun joystick n'est détecté
if joystick_count == 0:
print("Erreur, pas de joystick détecté !") # Affiche un message d'erreur si aucun joystick n'est connecté.
pygame.quit() # Arrête Pygame proprement.
sys.exit() # Quitte le programme.
else:
# Si un joystick est détecté, initialisation de celui-ci.
joystick = pygame.joystick.Joystick(0) # Récupère le premier joystick (index 0).
joystick.init() # Initialise le joystick pour pouvoir l'utiliser.
# Récupération du nombre de "hat switches" (poignées de contrôle directionnelles, souvent utilisées pour la direction).
hats = joystick.get_numhats()
# Fonction pour traiter les mouvements de la "hat switch" (direction du joystick)
def getHat(number):
# Si le "hat" n'est pas en position (0,0), il a été déplacé
if joystick.get_hat(number) != (0, 0):
# Si le mouvement sur l'axe Y du "hat" est vers le haut
if joystick.get_hat(number)[1] == 1:
print("Avancer") # Afficher "Avancer" lorsque le mouvement est vers le haut.
# Si le mouvement sur l'axe Y du "hat" est vers le bas
if joystick.get_hat(number)[1] == -1:
print("reculer") # Afficher "reculer" lorsque le mouvement est vers le bas.
# Si le mouvement sur l'axe X du "hat" est vers la droite
if joystick.get_hat(number)[0] == 1:
print("tourner à droite") # Afficher "tourner à droite" lorsque le mouvement est vers la droite.
# Si le mouvement sur l'axe X du "hat" est vers la gauche
if joystick.get_hat(number)[0] == -1:
print("tourner à gauche") # Afficher "tourner à gauche" lorsque le mouvement est vers la gauche.
# Boucle principale du programme
while True:
for event in pygame.event.get(): # Écoute tous les événements (comme les mouvements du joystick).
if event.type == pygame.QUIT: # Si l'utilisateur ferme la fenêtre
pygame.quit() # Arrête Pygame proprement.
sys.exit() # Quitte le programme.
# Si le joystick a des hats (directionnels)
if hats != 0:
for i in range(hats): # Parcours chaque hat
getHat(i) # Appelle la fonction getHat pour traiter les mouvements de chaque hat.
sleep(0.1) # Petite pause pour réduire l'utilisation du processeur.
Gestion de toutes les touches
- Gestion des 11 boutons, touche directionnelles et les deux sticks :
# Macé Robotics
# Public Licence
import pygame # Importation de la bibliothèque Pygame pour gérer une manette
from time import sleep
import sys
# Initialisation de Pygame pour préparer à l'utilisation de ses modules.
pygame.init()
# Compte le nombre de manettes connectées à l'ordinateur.
joystick_count = pygame.joystick.get_count()
# Vérification si aucun joystick n'est détecté
if joystick_count == 0:
print("Erreur, pas de joystick détecté !") # Affiche un message d'erreur si aucun joystick n'est connecté.
pygame.quit() # Arrête Pygame proprement.
sys.exit() # Quitte le programme.
else:
# Si un joystick est détecté, initialisation de celui-ci.
joystick = pygame.joystick.Joystick(0) # Récupère le premier joystick (index 0).
joystick.init() # Initialise le joystick pour pouvoir l'utiliser.
# Récupération du nombre de "hat switches" (poignées de contrôle directionnelles, souvent utilisées pour la direction).
hats = joystick.get_numhats()
buttons = joystick.get_numbuttons()
print("Manette :", joystick.get_name())
print("Axes :", joystick.get_numaxes())
print("Boutons :", joystick.get_numbuttons())
print("Hats :", joystick.get_numhats())
DEADZONE = 0.15 # zone morte pour éviter les parasites
def get_axis(axis):
value = joystick.get_axis(axis)
if abs(value) < DEADZONE:
return 0
return round(value, 2)
# Fonction pour traiter les mouvements de la "hat switch" (direction du joystick)
def getHat(number):
# Si le "hat" n'est pas en position (0,0), il a été déplacé
if joystick.get_hat(number) != (0, 0):
# Si le mouvement sur l'axe Y du "hat" est vers le haut
if joystick.get_hat(number)[1] == 1:
print("Avancer") # Afficher "Avancer" lorsque le mouvement est vers le haut.
joystick.get_button(0)
# Si le mouvement sur l'axe Y du "hat" est vers le bas
if joystick.get_hat(number)[1] == -1:
print("reculer") # Afficher "reculer" lorsque le mouvement est vers le bas.
# Si le mouvement sur l'axe X du "hat" est vers la droite
if joystick.get_hat(number)[0] == 1:
print("tourner à droite") # Afficher "tourner à droite" lorsque le mouvement est vers la droite.
# Si le mouvement sur l'axe X du "hat" est vers la gauche
if joystick.get_hat(number)[0] == -1:
print("tourner à gauche") # Afficher "tourner à gauche" lorsque le mouvement est vers la gauche.
# Boucle principale du programme
while True:
for event in pygame.event.get(): # Écoute tous les événements (comme les mouvements du joystick).
if event.type == pygame.QUIT: # Si l'utilisateur ferme la fenêtre
pygame.quit() # Arrête Pygame proprement.
sys.exit() # Quitte le programme.
# --- BOUTONS ---
if event.type == pygame.JOYBUTTONDOWN:
print(f"Bouton {event.button} RELÂCHÉ")
if event.type == pygame.JOYBUTTONUP:
print(f"Bouton {event.button} RELÂCHÉ")
# Si le joystick a des hats (touches directionnels)
if hats != 0:
for i in range(hats): # Parcours chaque hat
getHat(i) # Appelle la fonction getHat pour traiter les mouvements de chaque hat.
# Si le joystick a des hats (directionnels)
if buttons != 0:
for i in range(buttons): # Parcours chaque hat
joystick.get_button(i)
# ----- STICK GAUCHE -----
left_x = get_axis(0)
left_y = get_axis(1)
if left_x != 0 or left_y != 0:
print(f"STICK GAUCHE X:{left_x} Y:{left_y}")
# ----- STICK DROIT -----
right_x = get_axis(2)
right_y = get_axis(3)
if right_x != 0 or right_y != 0:
print(f"STICK DROIT X:{right_x} Y:{right_y}")
sleep(0.1) # Petite pause pour réduire l'utilisation du processeur.
# end of file
Fin