Session 5 : Notes du coach

Objectif de cette session

Après le checkpoint Basic, un ninja sait :

  • Faire bouger la balle à la verticale et la faire rebondir sur les quatre bords et sur la raquette.
  • Jouer un son lors d’une collision.
  • Diminuer les vies quand la balle atteint le bas.

Préparation

  • Le ZIP du starter prêt. Il contient sounds/hit.wav et sounds/explosion.wav.
  • Teste si pygame.mixer fonctionne sur le laptop de la salle dojo (parfois le pilote audio manque).
  • Dojo Defender : les ninjas ajoutent aujourd’hui des effets sonores à leur projet.

Répartition du temps (3 heures)

TempsActivité
0:00 à 0:10Retour + intro son
0:10 à 0:30Étape 1 à 2 : faire bouger la balle + rebonds
0:30 à 1:15Étape 3 : casser des briques
1:15 à 1:50Étape 4 : vies, son, victoire/game over
1:50 à 2:20Dojo Defender : ajouter le son
2:20 à 2:50Buffer / stretch / expert
2:50 à 3:00Showcase + cliffhanger

Questions fréquentes

« Aucun son » Deux causes :

  1. pygame.mixer.init() n’est pas tout en haut. Vérifie l’ordre dans le code.
  2. Le script est lancé depuis un autre dossier. Python cherche alors sounds/hit.wav dans le dossier où tu te trouves, pas à côté de main.py. Le starter utilise _DIR = os.path.dirname(os.path.abspath(__file__)) pour régler ça. Montre-le au ninja. Sur certains laptops, le pilote audio manque ; le try/except évite que le script plante dans ce cas.

« La balle traverse les briques » Le break après la suppression d’une brique manque ; sans break, Python vérifie plusieurs briques dans la même frame et ball_dy peut s’inverser deux fois.

« La balle accélère sans contrôle » ball_dy = -ball_dy est appelé plusieurs fois par frame (raquette ET bas en même temps). Ajoute un cooldown ou une vérification de position.


Indices pour Stretch et Expert

Stretch : casser des briques : Le break est essentiel. Explique : si tu l’oublies, la boucle vérifie toutes les briques et inverse ball_dy plusieurs fois dans la même frame.

Expert : vitesse : Utilise un facteur basé sur le nombre de briques restantes, pas une augmentation fixe par collision. L’accélération reste ainsi prévisible.


Script du cliffhanger

« La prochaine fois : la gravité. Ton personnage tombe vers le bas, sauf si tu le fais sauter à temps. Des plateformes, des étoiles et un saut avec du son. »


Dojo Defender aujourd’hui

En plus de Breakout, les ninjas travaillent aujourd’hui sur Dojo Defender Session 4 : menu + trois types d’ennemis.

Objectifs :

  • Implémenter une state machine (MENU, PLAYING, GAME_OVER)
  • Écrire une fonction reset
  • Trois types d’ennemis : drone, zigzag, charger
  • Système de vagues avec difficulté croissante

Répartition du temps : voir le tableau ci-dessus — 1:50 à 2:20 est pour Dojo Defender.

Préparation :

  • Préparer dojo-defender-s5-starter.zip et dojo-defender-s5-solution.zip
  • Vérifie que enemy_zigzag.png et enemy_charger.png sont bien dans le starter
  • Fiche de travail : Dojo Defender Session 4