Dojo Defender Session 3 : Notes du coach

Objectif de cette session

Après cette session, un ninja sait :

  • Expliquer la différence entre pgzero et raw pygame
  • Écrire la game loop lui-même (while running: clock.tick(60))
  • Convertir des Actors en GameObject avec Surface et Rect
  • Gérer l’input avec pygame.key.get_pressed() et KEYDOWN
  • Charger et jouer du son avec pygame.mixer

Préparation (30 min avant la session)

  • Les ZIP du starter prêts sur USB et sur le site : dojo-defender-s4-starter.fr.zip et dojo-defender-s4-solution.fr.zip.
  • Lancer le starter une fois sur le portable de la salle dojo.
  • Vérifie que les sons sont prêts dans dojo-defender-assets/sounds/, ou renvoie les ninjas vers la solution.
  • Explique pourquoi on change : « pgzero, c’est des petites roues. Maintenant, vous devenez de vrais développeurs Pygame. »

Répartition du temps (3 heures)

Cette session fait partie intégrante de la session 4 normale (Pong). Utilise le temps comme ceci :

TempsActivité
0:00 à 1:15Session 4 : Pong (étapes 1-4)
1:15 à 1:30Intro Dojo Defender : pgzero vs pygame
1:30 à 2:00Explorer le code + restart (Basic)
2:00 à 2:30Ajouter le son (Stretch)
2:30 à 2:50Expert : bouton mute, volume, particles
2:50 à 3:00Showcase + cliffhanger

Questions fréquentes

« Les images ne se chargent pas » Il manque probablement l’extension .png. En pgzero, elle était ajoutée automatiquement, en pygame non. Vérifie : GameObject('player_ship.png', ...).

« pygame.image.load donne une erreur » Le chemin doit être correct. Le starter utilise _DIR pour déterminer le chemin du script. Mets print(_DIR) pour débugger.

« Le son ne marche pas » Vérifie que pygame.mixer.init() a été appelé. Sans cette ligne, pygame.mixer.Sound() ne fait rien.

« Je n’entends rien pour bg_music » pygame.mixer.music.play(-1) est nécessaire — sans -1, ça ne joue qu’une fois.

« Pourquoi tout est dans une seule boucle while ? » Parce que pygame n’a pas de fonctions draw() et update(). Tout se passe dans la boucle. C’est comme ça que marchent les vrais jeux : à chaque frame, tout est refait.


Indices pour Stretch et Expert

Stretch : son La méthode la plus simple : copie les sons du dossier de la solution. Ou télécharge dojo-defender-assets séparément.

Expert : mute Utilise un seul booléen muted. pygame.mixer.music.set_volume(0) coupe la musique. Pour les SFX, tu dois entourer chaque play() d’un if not muted:.

Expert : effet de particules Une particule simple : stocke (x, y, dx, dy, durée de vie) dans un dict. Fais-les bouger et pâlir à chaque frame. Supprime-les quand la durée de vie est à 0.


Script du cliffhanger

« Vous avez porté Dojo Defender vers le vrai pygame et vous avez ajouté du son. La prochaine fois : les POWER-UPS. Des boucliers, des speed-boosts, des tirs en éventail. Et un vrai boss à la fin des vagues. »