Session 8 : Notes du coach
Objectif de cette session
À la fin du checkpoint Basic, un ninja sait :
- Faire défiler l’arrière-plan sans couture avec la technique du double blit.
- Déplacer des obstacles de droite à gauche et les supprimer quand ils sortent de l’écran.
- Enlever une vie lors d’une collision et arrêter le jeu à 0 vie.
Ce qui n’est pas attendu après la session 8 : les étoiles, l’augmentation de la difficulté, l’écran de game over. Ça, c’est du matériel Stretch/Expert.
Préparation (30 min avant la session)
- L’image d’arrière-plan du starter doit faire exactement
WIDTHpixels de large (800px par défaut) pour que le double blit soit sans couture. speedest un float. Fais remarquer aux ninjas quepygame.Rectn’accepte que des entiers. Le starter utilise déjàint(scroll_x); vérifie que les ninjas ne l’enlèvent pas.- Timer de spawn : le starter utilise
pygame.USEREVENT + 1. Explique rapidement comment fonctionnepygame.time.set_timer: il envoie automatiquement un event toutes les N millisecondes.
Répartition du temps (3 heures)
| Temps | Activité |
|---|---|
| 0:00 à 0:10 | Accueil, récapitulatif de la session 7 |
| 0:10 à 0:20 | Projecteur : expliquer l’arrière-plan qui défile |
| 0:20 à 1:30 | Travail en autonomie : étapes 1 et 2 |
| 1:30 à 2:15 | Stretch (étoiles) |
| 2:15 à 2:45 | Expert (vitesse qui augmente) + buffer |
| 2:45 à 3:00 | Showcase + cliffhanger |
Questions fréquentes
« L’arrière-plan clignote »
int(scroll_x) manque au moment du blit. pygame.Surface.blit attend des entiers ; si tu passes un float, pygame en fait un en interne mais ça peut donner des problèmes de cohérence d’une frame à l’autre. Vérifie les deux appels blit.
« Les obstacles ne sont pas supprimés »
Vérifie que obstacles.remove(obs) est bien dans le check colliderect, pas dehors. Erreur fréquente : le if est à la mauvaise indentation.
« La vitesse augmente mais les obstacles n’arrivent pas plus souvent »
pygame.time.set_timer doit être appelée à nouveau à chaque frame si l’intervalle change. Ajoute ça dans la game loop, pas une seule fois à l’initialisation. Autre solution : utilise un compteur de frames au lieu d’un timer.
« L’écran de game over disparaît tout de suite »
pygame.time.wait(3000) fonctionne en dehors de la game loop. Mais si running = False est déjà mis avant le blit et le wait supplémentaires, ça ne marche pas. Assure-toi que le blit et le wait du game over sont après la boucle while running, ou utilise un flag game_over séparé.
Indices pour Stretch et Expert
Stretch : les étoiles :
Les étoiles sont aussi des objets pygame.Rect. Fais remarquer aux ninjas que star.center donne un tuple (x, y), pratique pour pygame.draw.circle.
Expert : la vitesse qui augmente :
speed = BASE_SPEED + score * 0.1 est simple mais efficace. Explique pourquoi on utilise max(500, ...) pour l’intervalle de spawn : sans minimum, l’intervalle deviendrait négatif ou nul avec un score élevé.
Dojo Defender aujourd’hui
Session 7 de Dojo Defender = les ninjas choisissent et construisent leur propre feature. Ça se passe dans la deuxième moitié de la session (après Sky Highway).
Préparation
- ZIP du starter :
dojo-defender-s8-starter.zipdanscode/sessions/08-sky-highway/dojo-defender-starter/— c’est la solution DD S6 complète (avec le boss). - Imprime les modèles de planification de la fiche de travail Dojo Defender.
- Mets-toi d’accord avec les coaches sur qui accompagne quels ninjas pendant la partie Dojo Defender.
Temps
| Temps | Activité |
|---|---|
| 1:15 à 1:30 | Intro Dojo Defender |
| 1:30 à 1:45 | Choisir une feature + planifier |
| 1:45 à 2:30 | Construire en autonomie |
| 2:30 à 2:50 | Showcase |
Features possibles (pour les coaches)
- Power-ups (facile) : les ennemis lâchent des power-ups (spread shot, shield, speed boost) avec 20% de chance.
- High score (facile) : garde le meilleur score dans
highscore.txt, affiche-le dans le menu et au game over. - Difficulté (facile) : ajuste l’intervalle de spawn, la vitesse des ennemis ou le nombre de vies.
- Nouvel ennemi (difficile) : un ennemi qui laisse une traînée de particules.
- Idée perso (tous niveaux) : le ninja imagine lui-même une feature.
À surveiller : les ninjas veulent souvent trop de choses en même temps. Aide-les à choisir la plus petite version qui marche.
Script du cliffhanger
Lis ceci au groupe :
« Aujourd’hui, ton vaisseau a volé sur une route sans fin. La prochaine fois, quelqu’un arrive qui SE DÉFEND : un boss avec trois phases, une barre de HP, et des projectiles qui foncent sur toi. Tu arrives à le battre ? »