<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dojo Defender : Session 2 :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/index.html</link><description>Ton vaisseau a maintenant une arme. Les ennemis arrivent. Abats-les avant qu’ils atteignent le fond. Tous les 10 ennemis, une nouvelle vague — et ça devient de plus en plus difficile.
Ce que tu vas apprendre aujourd’hui Tirer avec la barre d’espace et un cooldown Des listes pour les balles et les ennemis La collision entre les balles et les ennemis Des vagues qui deviennent de plus en plus difficiles Des ennemis qui font des mouvements sinusoïdaux Étape 0 : Ouvre le starter Ouvre Thonny. Télécharge le starter Dojo Defender d’aujourd’hui, décompresse le ZIP et ouvre main.py. Tu n’étais pas là la dernière fois ? Télécharge la solution de la session 1 et commence avec ça. Clique sur Run. Tu vois le même jeu que la dernière fois : vaisseau, astéroïdes, explosions. Des problèmes ? Va voir Installer Thonny. Étape 1 : Tirer avec ESPACE Ton vaisseau a un canon laser. Ajoute une liste pour les balles en haut :</description><generator>Hugo</generator><language>fr-BE</language><atom:link href="https://python.coderdojohasselt.be/fr/dojo-defender/session-2/index.xml" rel="self" type="application/rss+xml"/><item><title>Dojo Defender Session 2 : Cheatsheet</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/cheatsheet/index.html</guid><description># Tirer avec ESPACE def on_key_down(key): global shoot_cooldown if key == keys.SPACE and shoot_cooldown == 0: bullet = Actor('bullet') bullet.x = ship.x bullet.y = ship.y - 20 bullets.append(bullet) shoot_cooldown = 15 # Faire bouger les balles et les supprimer for bullet in bullets[:]: bullet.y -= 8 if bullet.y &lt; -10: bullets.remove(bullet) # Faire apparaître un ennemi def spawn_enemy(): enemy = Actor('enemy_drone') enemy.x = random.randint(30, WIDTH - 30) enemy.y = -30 enemy.speed = random.uniform(1, 3) enemies.append(enemy) # Intervalle de spawn des ennemis spawn_counter += 1 if spawn_counter >= spawn_interval: spawn_counter = 0 spawn_enemy() # Une balle touche un ennemi for bullet in bullets[:]: bullet.y -= 8 if bullet.y &lt; -10: bullets.remove(bullet) continue for enemy in enemies[:]: if bullet.colliderect(enemy): bullets.remove(bullet) enemies.remove(enemy) score += 10 break # Vagues enemies_destroyed += 1 if enemies_destroyed % 10 == 0: wave += 1 spawn_interval = max(60, spawn_interval - 10) # Mouvement sinusoïdal (import math) enemy.x = enemy.start_x + math.sin(timer * 0.03 + enemy.strafe_offset) * 50 # Afficher le texte de la vague if wave_display_timer > 0: screen.draw.text(f"VAGUE {wave} !", center=(WIDTH/2, HEIGHT/2), color="yellow", fontsize=60)</description></item><item><title>Dojo Defender Session 2 : Démo</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/demo/index.html</guid><description>Comment montrer la solution Ouvre un terminal dans le dossier du projet. Lance : uv run python3 code/sessions/03-space-blaster/dojo-defender-solution/main.py Montre : Le vaisseau bouge à gauche et à droite avec les flèches. ESPACE tire une balle vers le haut (cooldown visible). Les ennemis (enemy_drone) apparaissent en haut et tombent avec un mouvement sinusoïdal. Une balle touche un ennemi → les deux disparaissent, +10 points. Tous les 10 kills : la vague monte, les ennemis apparaissent plus vite. Les astéroïdes continuent de tomber (depuis S1). Une balle peut aussi toucher les astéroïdes (+5 points). Trois vies, animation d’explosion, invincibilité, game over — tout de S1 fonctionne encore.</description></item><item><title>Dojo Defender Session 2 : Notes du coach</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/dojo-defender/session-2/mentor-notes/index.html</guid><description>Objectif de cette session Après cette session, un ninja sait :
Créer des balles avec on_key_down et un mécanisme de cooldown Faire apparaître des objets ennemis et les faire bouger avec une oscillation sinusoïdale Détecter les collisions entre les balles et les ennemis (boucle imbriquée) Mettre en place un système de vagues avec une difficulté qui monte Préparation (30 min avant la session) Les ZIP du starter prêts sur USB et sur le site : dojo-defender-s3-starter.fr.zip et dojo-defender-s3-solution.fr.zip. Lancer le starter une fois sur le portable de la salle dojo. Les ninjas qui ont manqué la S1 : renvoie-les vers la solution de la S1. Répartition du temps (3 heures) Cette session fait partie intégrante de la session 3 normale (Space Blaster). Utilise le temps comme ceci :</description></item></channel></rss>