<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Session 2 : Dodge Meteors :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/index.html</link><description>Ton vaisseau flotte dans l’espace sombre pendant que des météores arrivent du haut vers le bas. Évite-les, ou perds une vie. Plus tu survis longtemps, plus ils vont vite. Et cette fois, tu construis aussi Dojo Defender : le plus grand projet qui grandit à chaque session.
Ce que tu vas apprendre aujourd’hui Utiliser des listes pour garder plusieurs objets Spawner des objets (les créer) et les supprimer Tenir les vies à jour et afficher un écran de game over Dojo Defender : ajouter ton propre vaisseau au plus grand projet Étape 0 : Installation Ouvre Thonny. Télécharge le starter via ce lien, décompresse le ZIP et ouvre main.py. Clique sur Run. Tu vois ton vaisseau en bas, mais aucun météore ne tombe encore. Des problèmes ? Va voir Installer Thonny. Étape 1 : Fais apparaître des météores Complète la fonction spawn_meteor(). Un météore est un Actor qui commence en haut de l’écran à une position x au hasard :</description><generator>Hugo</generator><language>fr-BE</language><atom:link href="https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/index.xml" rel="self" type="application/rss+xml"/><item><title>Session 2 : Notes du coach</title><link>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/mentor-notes/index.html</guid><description>Objectif de cette session Après le checkpoint Basic, un ninja sait :
Créer et gérer une liste de météores. Faire apparaître des météores, les faire bouger et les supprimer quand ils sortent de l’écran. Retirer une vie à chaque collision et arrêter quand il n’y a plus de vies. Dojo Defender démarre aujourd’hui. Les ninjas ajoutent leur vaisseau au plus grand projet.
Préparation (30 min avant la session) Les ZIP du starter prêts sur USB et sur le site : starter.zip et dojo-defender-s2.zip. Préparer le briefing Dojo Defender : explique que ce projet grandit à chaque session et que ça vaut la peine d’être présent. Lancer toi-même le starter une fois sur le portable de la salle dojo. Répartition du temps (3 heures) Temps Activité 0:00 à 0:10 Retour sur la session 1 + intro aux météores 0:10 à 0:25 Étape 1 : spawn_meteor() 0:25 à 1:00 Étape 2 : bouger + collision 1:00 à 1:45 Étapes 3 et 4 : game over, vitesse, score 1:45 à 2:15 Intro Dojo Defender + faire bouger le vaisseau 2:15 à 2:45 Buffer / stretch / expert 2:45 à 3:00 Showcase + cliffhanger Questions fréquentes « Ma liste devient de plus en plus grande et le jeu ralentit » Les météores ne sont pas supprimés. Vérifie que l’appel à remove() est correct et que la boucle parcourt meteors[:] (une copie), pas meteors lui-même.</description></item><item><title>Session 2 : Cheatsheet</title><link>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/cheatsheet/index.html</guid><description>Créer une liste et y ajouter des éléments meteors = [] # liste vide rock = Actor('meteor') meteors.append(rock) # ajoute Parcourir une liste (avec suppression) for rock in meteors[:]: # [:] = une copie rock.y += 4 if rock.y > HEIGHT + 30: meteors.remove(rock) Timer : faire quelque chose toutes les N frames timer = 0 def update(): global timer timer += 1 if timer % 60 == 0: # chaque seconde spawn_meteor() Collision avec plusieurs objets for rock in meteors[:]: if rock.colliderect(ship): meteors.remove(rock) lives -= 1 Arrêter quand c’est game over def update(): if game_over: return # le reste du code... Du texte à l’écran screen.draw.text(f"Score: {score}", (10, 10), color="white") screen.draw.text( "GAME OVER", center=(WIDTH / 2, HEIGHT / 2), color="red", fontsize=60, ) Position aléatoire import random x = random.randint(30, WIDTH - 30)</description></item><item><title>Session 2 : Enregistrement de la démo</title><link>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/02-dodge-meteors/demo/index.html</guid><description>Lance la solution : cd code/sessions/02-dodge-meteors/solution &amp;&amp; uv run pgzrun main.py.
Enregistre ~10 secondes pendant que tu évites des météores et que tu perds une vie. Enregistre le fichier sous dodge-meteors.gif dans static/sessions/02-dodge-meteors/. Taille visée : ~600×500 pixels, ≤ 2 MB.
Fais-y référence dans la fiche de travail via : ![Demo](/sessions/02-dodge-meteors/dodge-meteors.gif).</description></item></channel></rss>