Session 3 : Notes du coach
Objectif de cette session
Après le checkpoint Basic, un ninja sait :
- Créer un projectile quand ESPACE est pressée et le ranger dans une liste.
- Faire monter les projectiles et les supprimer quand ils sortent de l’écran.
- Comprendre pourquoi on utilise
bullets[:]et pasbulletsquand on supprime dans une boucle.
Préparation
- Le ZIP du starter prêt sur USB et sur le site.
- Lancer toi-même la solution une fois pour connaître le timing des étapes.
- Dojo Defender : les ninjas ajoutent aujourd’hui un système de tir à leur projet.
Répartition du temps (3 heures)
| Temps | Activité |
|---|---|
| 0:00 à 0:10 | Retour sur la session 2 + intro |
| 0:10 à 0:20 | Étape 1 : faire bouger le vaisseau (révision) |
| 0:20 à 1:00 | Étape 2 : tirer + faire bouger les projectiles |
| 1:00 à 1:45 | Étape 3 : collision avec les ennemis |
| 1:45 à 2:15 | Étape 4 : faire bouger les ennemis + game over |
| 2:15 à 2:45 | Dojo Defender : ajouter le système de tir |
| 2:45 à 3:00 | Showcase + cliffhanger |
Questions fréquentes
« bullets donne une RuntimeError pendant la suppression »
Le ninja parcourt la liste d’origine pendant qu’il supprime. Fais-lui utiliser bullets[:] (une copie).
« Mes projectiles n’apparaissent pas »
Vérifie que kogel.draw() est dans draw() (dans la boucle sur bullets). Vérifie aussi que bullets est vide au démarrage.
« on_key_down n’est pas reconnu »
C’est un callback Pgzero : la fonction doit porter exactement ce nom. Vérifie les fautes de frappe.
Indices pour Stretch et Expert
Stretch : collision :
La boucle imbriquée (projectiles × ennemis) est le cœur du truc. Explique pourquoi break est nécessaire après la suppression, sinon Python plante parce que tu as déjà modifié la liste bullets pendant que la boucle interne continue.
Expert : faire bouger les ennemis :
Utilise la variable timer existante. Explique que % 90 se déclenche toutes les 90 frames, ce qui fait 1,5 seconde par pas à 60 fps.
Script du cliffhanger
« La prochaine fois : pas d’aliens, mais un adversaire classique : PONG. Deux joueurs, une balle, et tu apprends la vraie façon pygame de programmer. »
Dojo Defender aujourd’hui
Les ninjas qui participent à Dojo Defender ajoutent aujourd’hui le tir et les ennemis à leur projet S1.
Répartition du temps : consacre ~45 min à Dojo Defender après le contenu normal de la S3.
Étapes :
- Ouvre le starter S2 (une copie de la solution S1).
- Étapes 1-2 : tirer avec ESPACE et cooldown.
- Étape 3 : faire apparaître les ennemis.
- Étape 4 : collision + waves.
Starter : dojo-defender-s3-starter.zip
Solution : dojo-defender-s3-solution.zip
Fiche de travail : /dojo-defender/session-2/
Attention : les ninjas qui ont manqué la S1 ont besoin de la solution S1 comme point de départ.