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.zip et dojo-defender-s6-solution.fr.zip.
  • Lancer le starter une fois sur le portable de la salle dojo.
  • Vérifie que asteroid_med.png et asteroid_small.png se trouvent dans le dossier images/ 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 :

TempsActivité
0:00 à 1:15Session 6 : Platformer (étapes 1-4)
1:15 à 1:30Intro 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. »