11. ÉTAPE 10 : Portage sur Console (Recalbox)


Objectif

L'élève apprend à rendre son jeu compatible avec un matériel spécifique (le Raspberry Pi) et à remplacer les entrées clavier par celles d'une manette.

Question motivante

"Votre jeu est super sur PC, mais comment le transformer en une véritable 'ROM' jouable sur une télévision avec une manette de Super Nintendo ?"

Concepts clés à maîtriser

  • Le module Joystick : Détecter et lire les axes/boutons d'une manette.

  • Le mode FULLSCREEN : Utiliser tout l'affichage de la télévision.

  • La gestion de la sortie : Pouvoir quitter le jeu sans clavier (indispensable sur console).


1. Préparation du matériel (Avant la boucle)

On initialise la manette et on force le plein écran pour l'immersion.

Python
# ===== CONFIGURATION CONSOLE =====
pygame.joystick.init()
joysticks = [pygame.joystick.Joystick(i) for i in range(pygame.joystick.get_count())]

# Passage en plein écran (0,0 s'adapte automatiquement à la TV)
screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
WIDTH, HEIGHT = screen.get_size() 

2. Mouvement à la manette (Dans la boucle)

On remplace (ou on ajoute) la lecture des axes de la manette.

Python
    # Lecture de la manette si elle est branchée
    for joy in joysticks:
        # Axe 0 = Horizontal, Axe 1 = Vertical
        # On multiplie par la vitesse du joueur
        player['x'] += joy.get_axis(0) * player['speed']
        player['y'] += joy.get_axis(1) * player['speed']
        
        # SÉCURITÉ : Quitter le jeu avec le bouton "START" (souvent le bouton 7)
        if joy.get_button(7):
            running = False

3. Actions (Tirer / Attaquer)

On utilise l'événement JOYBUTTONDOWN pour déclencher les actions.

Python
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            
        # Si on appuie sur un bouton de la manette
        if event.type == pygame.JOYBUTTONDOWN:
            if event.button == 0:  # Bouton 'A' sur SNES
                # Appeler ici le code d'attaque ou de tir
                print("Action manette détectée !")


Le Défi "Arcade" :

"Faites en sorte que si on appuie sur 'SELECT' (bouton 6) et 'START' (bouton 7) en même temps, le jeu se ferme. C'est le raccourci standard sur Recalbox !"


C'est la fin du voyage !