<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Session 9 : Boss Battle :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/index.html</link><description>Le boss final t’attend. Il va et vient, tire des projectiles et devient de plus en plus dangereux à mesure que ses HP baissent. Toi, tu tires en retour, tu suis ses HP sur une barre, et tu survis à trois phases. C’est la session la plus difficile, et la plus satisfaisante si tu y arrives.
Ce que tu vas apprendre aujourd’hui Dessiner une barre de HP à l’écran Une state machine : le boss ne se comporte pas pareil selon la phase Faire tirer le boss avec un timer de projectiles Activer des phases à des seuils de HP Étape 0 : Installation Ouvre Thonny. Télécharge le starter via ce lien, décompresse le ZIP et ouvre main.py dans Thonny. Clique sur Run. Tu vois le boss en haut, ton vaisseau en bas. Pas encore de mouvement, pas encore de projectiles. Des problèmes ? Demande à un coach. Étape 1 : Faire bouger le boss Le boss va et vient sur l’écran. Quand il touche le bord, il repart dans l’autre sens.</description><generator>Hugo</generator><language>fr-BE</language><atom:link href="https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/index.xml" rel="self" type="application/rss+xml"/><item><title>Session 9 : Notes du coach</title><link>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/mentor-notes/index.html</guid><description>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.</description></item><item><title>Session 9 : Cheatsheet</title><link>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/cheatsheet/index.html</guid><description>Faire aller et venir le boss boss_rect.x += boss_speed if boss_rect.right >= WIDTH or boss_rect.left &lt;= 0: boss_speed = -boss_speed # inverser la direction Dessiner une barre de HP BOSS_MAX_HP = 100 # Fond pygame.draw.rect(screen, (80, 0, 0), (10, 10, 300, 20)) # Partie remplie breedte = max(0, int(300 * boss_hp / BOSS_MAX_HP)) pygame.draw.rect(screen, RED, (10, 10, breedte, 20)) Collision projectile ↔ boss for b in player_bullets[:]: b.y -= 8 if b.colliderect(boss_rect): player_bullets.remove(b) boss_hp -= 1 Le boss tire (patron du timer) boss_shoot_timer += 1 if boss_shoot_timer >= boss_shoot_interval: boss_shoot_timer = 0 boss_bullets.append( pygame.Rect(boss_rect.centerx - 4, boss_rect.bottom, 8, 16) ) Logique des phases (state machine) if boss_hp > 50: boss_phase = 1 boss_speed_abs = 3 boss_shoot_interval = 60 elif boss_hp > 25: boss_phase = 2 boss_speed_abs = 5 boss_shoot_interval = 35 else: boss_phase = 3 boss_speed_abs = 7 boss_shoot_interval = 20 # Garder la direction : boss_speed = boss_speed_abs * (1 if boss_speed > 0 else -1) Écran de victoire screen.fill((0, 0, 0)) win = font.render("BOSS VAINCU !", True, YELLOW) screen.blit(win, (WIDTH // 2 - win.get_width() // 2, HEIGHT // 2)) pygame.display.flip() pygame.time.wait(3000) Les vies du joueur en petits cœurs for i in range(player_lives): pygame.draw.circle(screen, RED, (WIDTH - 20 - i * 30, 20), 10)</description></item><item><title>Session 9 : Enregistrement de la démo</title><link>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/09-boss-battle/demo/index.html</guid><description>La session 9 utilise du pygame pur. Montre un GIF de la solution sur la page de la session.
Comment enregistrer Lance la solution : cd code/sessions/09-boss-battle/solution &amp;&amp; python main.py. Utilise un enregistreur d’écran : Linux : Peek ou SimpleScreenRecorder. Windows : ScreenToGif. macOS : QuickTime → exporte en GIF via ffmpeg ou Kap. Enregistre ~20 secondes : traverse les trois phases et montre l’écran de victoire. Enregistre le fichier sous boss-battle.gif dans static/sessions/09-boss-battle/. Fais-y référence dans la fiche de travail via : ![Demo](/sessions/09-boss-battle/boss-battle.gif). Taille visée : ~800×500 pixels, ≤ 2 MB.</description></item></channel></rss>