Dojo Defender Session 7 : Notes du coach

Objectif de cette session

Après cette session, un ninja sait :

  • Trouver et planifier lui-même une feature à l’aide d’un plan d’étapes simple
  • Lire et comprendre du code existant pour y ajouter quelque chose
  • Résoudre un problème de façon autonome avec un accompagnement minimal du coach

Cette session est différente de toutes les précédentes — pas d’instructions pas à pas. Le ninja choisit lui-même ce qu’il construit.


Préparation (30 min avant la session)

  • Le ZIP du starter prêt sur USB et sur le site : dojo-defender-s8-starter.fr.zip.
  • Le starter est la solution complète de DD S7 (boss + toutes les features). Lance-le une fois sur le portable de la salle dojo.
  • Mets-toi d’accord avec les autres coaches pour savoir quel ninja fait quelle feature, pour avoir de la variété dans le showcase.
  • Imprime quelques modèles de planification (le bloc « Planification guidée par le coach » de la fiche de travail) pour les ninjas qui préfèrent travailler sur papier.

Répartition du temps (3 heures)

Cette session fait partie intégrante de la session normale 8 (Sky Highway) :

TempsActivité
0:00 à 1:15Session 8 : Sky Highway (étapes 1-4)
1:15 à 1:30Intro Dojo Defender : « Ton jeu, ta feature »
1:30 à 1:45Choisir une feature + planifier (guidé par le coach)
1:45 à 2:30Construire en autonomie
2:30 à 2:50Showcase
2:50 à 3:00Buffer / rangement

Jeu de rôle du coach

Cette session tourne autour de l’autonomie. Ton rôle de coach :

  1. Ne pas trop résoudre. Si un ninja bloque, pose des questions au lieu de donner des réponses :

    • « Que se passe-t-il quand tu appuies sur ESPACE ? »
    • « Quelle variable doit changer ? »
    • « Où se trouve le vaisseau dans le code ? »
  2. Garder le scope. Les ninjas veulent souvent trop en faire en même temps. Aide-les à choisir la plus petite version qui « marche ». Un power-up qui marche vaut mieux qu’un système de combo à moitié fini.

  3. Célébrer l’échec. Si ça ne marche pas, c’est aussi formateur. Fais-leur raconter ce qui a raté et ce qu’ils en ont appris.


Questions fréquentes

« Les power-ups n’apparaissent pas » Vérifie que spawn_powerup() est appelé là où un ennemi meurt (à la collision balle-ennemi). Aussi : random.random() < 0.2, c’est 20 % — ce n’est pas beaucoup. Fais-leur mettre 0.5 temporairement pour tester.

« Le spread shot ne tire qu’une balle » bullet.dx et bullet.dy doivent être ajoutés à l’update des balles. Sans ces variables, toutes les balles volent droit vers le haut. Ajoute bullet.dx = 0 et bullet.dy = -8 à la création des balles normales, et bullet.rect.x += bullet.dx et bullet.rect.y += bullet.dy dans la boucle d’update.

« Le timer du power-up ne se remet pas à zéro après un restart » N’oublie pas : active_powerup = None et powerup_timer = 0 dans reset_game().

« Le high score n’est pas sauvegardé » save_highscore() doit être appelé sur l’écran de game over, avant que reset_game() soit appelé. Sinon le score vaut déjà 0.

« High score.txt s’écrase sans arrêt » Le test if val > load_highscore() évite qu’un score plus bas écrase le record. Ça ne marche pas ? Fais-leur ajouter des print() pour débugger.

« Le vaisseau est invisible après un restart » ship.visible = True doit se trouver dans reset_game(). Les ninjas oublient parfois ça.


Implémentation des power-ups (pour les coaches)

La solution des power-ups marche comme ceci :

  • Spawn : spawn_powerup(x, y) est appelé là où un ennemi meurt. 20 % de chance.
  • Collect : dans la game loop, on vérifie si un power-up touche le vaisseau.
  • Timer : powerup_timer décompte à chaque frame. À 0, active_powerup = None.
  • Spread shot : remplace le tir normal. Au lieu d’une balle, 3 balles avec un angle.
  • Bouclier : lors d’un hit, active_powerup = None est mis et invincible = True pendant 5 secondes.
  • Speed boost : ship_speed est doublé, de 5 à 10.

Showcase

Fais présenter chaque ninja 30 secondes. Trois questions fixes :

  1. Qu’est-ce que tu voulais faire ?
  2. Est-ce que ça a marché ?
  3. Qu’est-ce qui a été le plus difficile ?

Comme coach : nomme chaque fois quelque chose de précis qui a bien marché (« Joli, ce timer que tu as ajouté », « Bien vu d’avoir compris comment fonctionne le fichier high score »).

Script du cliffhanger

« Aujourd’hui, tu as ajouté ta propre feature à Dojo Defender. La prochaine fois, on commence un jeu complètement nouveau — mais Dojo Defender restera toujours là. Emporte-le chez toi et continue à le bricoler. »