Session 9 : Notes du coach

Objectif de cette session

À la fin du checkpoint Basic, un ninja sait :

  • Faire aller et venir le boss en inversant la direction.
  • Faire toucher le boss par les projectiles du joueur et faire baisser boss_hp.
  • Dessiner une barre de HP qui suit les HP actuels.

Ce qui n’est pas attendu après la session 9 : le boss qui tire en retour, les trois phases. Ça, c’est du matériel Stretch/Expert.


Préparation (30 min avant la session)

  • Expliquer brièvement les state machines : une variable (boss_phase) détermine le comportement. Utilise une analogie du quotidien : un feu de signalisation qui passe du vert à l’orange puis au rouge.
  • BOSS_MAX_HP doit rester cohérent dans tout le code. Si les ninjas le changent, ils doivent aussi adapter le calcul de la barre de HP.
  • Vérifie le starter : player_bullets et boss_bullets sont des listes vides, boss_hp = 100, BOSS_MAX_HP = 100, boss_shoot_timer = 0.

Répartition du temps (3 heures)

TempsActivité
0:00 à 0:10Accueil, récapitulatif de la session 8
0:10 à 0:20Projecteur : expliquer la barre de HP et la state machine
0:20 à 1:30Travail en autonomie : étapes 1 et 2
1:30 à 2:15Stretch (le boss tire en retour)
2:15 à 2:45Expert (trois phases) + buffer
2:45 à 3:00Showcase + cliffhanger pour la session 10

Questions fréquentes

« Le boss s’arrête au bord mais ne repart pas » boss_speed = -boss_speed doit venir après le check du bord. S’il est placé avant le déplacement, le boss repart avant d’atteindre le bord et peut se bloquer contre le bord (en oscillant). Fais vérifier l’ordre.

« La barre de HP affiche une largeur négative quand HP < 0 » Ajoute un clamp : breedte = max(0, int(300 * boss_hp / BOSS_MAX_HP)). Autre option : arrête la game loop dès que boss_hp <= 0 et montre l’écran de victoire.

« Les projectiles du boss traversent le joueur » Vérifie que player_rect est bien réglé (pas à la position 0,0 à cause d’une erreur d’initialisation). Vérifie aussi si b.colliderect(player_rect) est placé avant ou après le dessin du projectile : ça ne change rien à la justesse, mais c’est déroutant quand le projectile est déjà dessiné et puis « rembobiné ».

« La phase 3 ne fait pas apparaître de projectiles doubles » Vérifie que boss_phase est bien réglé avant le code de tir. Si la logique des phases est après le timer de tir, le code de tir utilise la phase précédente. Mets toujours la mise à jour de la phase en haut de la game loop.


Indices pour Stretch et Expert

Stretch : le boss qui tire : boss_shoot_interval = 60 veut dire une fois par seconde à 60 FPS. Diminue cette valeur pour plus de difficulté. Fais remarquer le patron aux ninjas : augmenter le timer → check → reset et spawn.

Expert : trois phases : L’astuce boss_speed = boss_speed_abs * (1 if boss_speed > 0 else -1) garde la direction pendant que la vitesse change. C’est un bon moment pour parler de l’opérateur ternaire en Python.


Script du cliffhanger

Lis ceci au groupe :

« Aujourd’hui, tu as battu un boss en trois phases. La prochaine fois, il n’y a pas de boss, pas d’obstacles, pas de règles : c’est TOI qui décides tout. Ton propre jeu, de zéro. Qu’est-ce que tu vas construire ? »