Dojo Defender Session 5 : Notes du coach
Objectif de cette session
Après cette session, un ninja sait :
- Créer un fond étoilé en parallaxe avec trois couches
- Construire un système de particules avec des listes de dictionnaires
- Ajouter des effets basés sur la position (gaz d’échappement, explosions)
- Appliquer une division récursive aux astéroïdes
Préparation (30 min avant la session)
- Les ZIP du starter prêts sur USB et sur le site :
dojo-defender-s6-starter.fr.zipetdojo-defender-s6-solution.fr.zip. - Lancer le starter une fois sur le portable de la salle dojo.
- Vérifie que
asteroid_med.pngetasteroid_small.pngse trouvent dans le dossierimages/du starter. Ces images ont été ajoutées aux shared assets et doivent être dans le ZIP. - Explique la parallaxe au tableau : dessine trois couches d’étoiles avec des vitesses différentes.
- Explique le cycle de vie d’une particule : naît → bouge → s’estompe → meurt.
Répartition du temps (3 heures)
Cette session fait partie intégrante de la session normale 6 (Platformer). Utilise le temps comme ceci :
| Temps | Activité |
|---|---|
| 0:00 à 1:15 | Session 6 : Platformer (étapes 1-4) |
| 1:15 à 1:30 | Intro Dojo Defender : dessiner la parallaxe au tableau |
| 1:30 à 2:00 | Étape 1 : étoiles en parallaxe (Basic) |
| 2:00 à 2:30 | Étape 2 : système de particules (Basic) |
| 2:30 à 2:50 | Étape 3 : effets de position (Stretch) |
| 2:50 à 3:00 | Étape 4 : diviser les astéroïdes (Expert) + showcase |
Questions fréquentes
« Les étoiles ne bougent pas »
update_stars() n’est pas appelé dans la game loop. Fais vérifier au ninja que la fonction est appelée à chaque frame, aussi dans le menu.
« Les étoiles se dessinent par-dessus le texte »
draw_stars(screen) doit venir avant les autres instructions de dessin, mais après screen.fill(). L’ordre est : fill → étoiles → particules → objets du jeu → texte de l’UI.
« Les particules sont trop grandes / trop petites »
Ajuste le size_range dans spawn_particles(). Astuce : fais-les plus petites que tu ne le penses. 2-5 pixels, c’est déjà grand pour une particule.
« Les particules continuent de flotter après un restart »
reset_game() oublie particles.clear(). Toutes les listes doivent être vidées dans le reset.
« L’astéroïde ne se divise qu’une fois »
La fonction split_asteroid() supprime l’astéroïde d’origine et en ajoute deux nouveaux. Les nouveaux ont asteroid_size = 'med' (ou 'small'). Vérifie que les astéroïdes nouvellement créés ont aussi la propriété asteroid_size.
« Les astéroïdes clignotent après la division » Les nouveaux astéroïdes apparaissent à la même position y que l’ancien. Ils descendent tout de suite. C’est normal — dans un jeu rapide, ça ne se voit presque pas.
« Pygame affiche ’no module named math’ »
import math n’est pas encore en haut du fichier. Les ninjas doivent l’ajouter quand ils écrivent spawn_particles().
Indices pour Stretch et Expert
Stretch : effets de position L’étape la plus difficile, c’est de trouver le bon endroit dans le code pour insérer les spawns de particules. Indique au ninja :
- Gaz d’échappement : au test des flèches, après
ship.rect.centerx += 5 - Débris d’explosion : à
asteroids.remove(rock)dans la boucle de collision des balles - Étincelles de mort d’ennemi : à
enemies.remove(enemy), là où l’ennemi disparaît en bas
Expert : diviser les astéroïdes
La fonction de division est récursive : split_asteroid appelle spawn_asteroid qui crée une taille plus petite. Fais d’abord adapter spawn_asteroid aux ninjas pour qu’il accepte un paramètre size, et seulement ensuite écrire la fonction de division.
Défi pour les ninjas rapides : « Que se passe-t-il si la fonction de division crée aussi 3 ou 4 astéroïdes plus petits ? Et si les petits astéroïdes sont plus rapides que les grands ? »
Script du cliffhanger
« Aujourd’hui, Dojo Defender a reçu un magnifique fond étoilé, des gaz d’échappement fumants et des astéroïdes qui partent en morceaux. La prochaine fois : les POWER-UPS. Des boucliers qui te protègent, des speed-boosts et des spread-shots qui tirent trois balles à la fois. Accroche-toi. »