<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sessie 9: Boss Battle :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/sessions/python/09-boss-battle/index.html</link><description>De eindbaas wacht op je. Hij beweegt heen en weer, schiet kogels en wordt steeds gevaarlijker naarmate zijn HP daalt. Jij schiet terug, houdt zijn HP bij op een balk, en overleeft drie fasen. Dit is de moeilijkste sessie, en de meest bevredigende als je hem haalt.
Wat je vandaag leert Een HP-balk tekenen op het scherm Een state machine: de baas gedraagt zich anders per fase De baas laten schieten met een kogeltimer Fasen activeren op HP-drempelwaarden Stap 0: Installeren Open Thonny. Download de starter via deze link, pak de ZIP uit en open main.py in Thonny. Klik op Run. Je ziet de baas bovenaan, jouw schip onderaan. Geen movement, geen kogels nog. Problemen? Vraag een coach. Stap 1: Baas laten bewegen De baas beweegt heen en weer over het scherm. Als hij de rand raakt, keert hij om.</description><generator>Hugo</generator><language>nl</language><atom:link href="https://python.coderdojohasselt.be/sessions/python/09-boss-battle/index.xml" rel="self" type="application/rss+xml"/><item><title>Sessie 9: Coach-notities</title><link>https://python.coderdojohasselt.be/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/sessions/python/09-boss-battle/mentor-notes/index.html</guid><description>Doel van deze sessie Aan het einde van de Basic checkpoint kan een ninja:
De baas heen en weer laten bewegen met richting-omschakeling. Speler-kogels de baas laten raken en boss_hp laten slinken. Een HP-balk tekenen die meeloopt met de huidige HP. Wat niet verwacht wordt na sessie 9: baas schiet terug, drie fases. Die zijn Stretch/Expert-materiaal.
Voorbereiding (30 min vóór de sessie) State machines kort uitleggen: een variabele (boss_phase) bepaalt het gedrag. Gebruik een alledaagse analogie: een stoplicht dat van groen naar oranje naar rood gaat. BOSS_MAX_HP moet consistent zijn in de hele code. Als ninjas dit veranderen, moeten ze ook de HP-balkberekening aanpassen. Controleer de starter: player_bullets en boss_bullets zijn lege lijsten, boss_hp = 100, BOSS_MAX_HP = 100, boss_shoot_timer = 0. Tijdsindeling (3 uur) Tijd Activiteit 0:00 tot 0:10 Welkom, terugblik sessie 8 0:10 tot 0:20 Projector: HP-balk en state machine uitleggen 0:20 tot 1:30 Zelfstandig werken: stap 1 en 2 1:30 tot 2:15 Stretch (baas schiet terug) 2:15 tot 2:45 Expert (drie fases) + buffer 2:45 tot 3:00 Showcase + cliffhanger voor sessie 10 Veelgestelde vragen “De baas stopt bij de rand maar keert niet om” boss_speed = -boss_speed moet staan na de rand-check. Als het vóór de beweging staat, keert de baas om voordat hij de rand bereikt en kan hij vast komen te zitten aan de rand (oscillerend). Laat de volgorde controleren.</description></item><item><title>Sessie 9: Cheatsheet</title><link>https://python.coderdojohasselt.be/sessions/python/09-boss-battle/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/09-boss-battle/cheatsheet/index.html</guid><description>Baas heen-en-weer bewegen boss_rect.x += boss_speed if boss_rect.right >= WIDTH or boss_rect.left &lt;= 0: boss_speed = -boss_speed # richting omdraaien HP-balk tekenen BOSS_MAX_HP = 100 # Achtergrond pygame.draw.rect(screen, (80, 0, 0), (10, 10, 300, 20)) # Gevuld deel breedte = max(0, int(300 * boss_hp / BOSS_MAX_HP)) pygame.draw.rect(screen, RED, (10, 10, breedte, 20)) Kogel-botsing met baas for b in player_bullets[:]: b.y -= 8 if b.colliderect(boss_rect): player_bullets.remove(b) boss_hp -= 1 Baas schiet (timer-patroon) 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) ) Fase-logica (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 # Richting bewaren: boss_speed = boss_speed_abs * (1 if boss_speed > 0 else -1) Win-scherm screen.fill((0, 0, 0)) win = font.render("BAAS VERSLAGEN!", True, YELLOW) screen.blit(win, (WIDTH // 2 - win.get_width() // 2, HEIGHT // 2)) pygame.display.flip() pygame.time.wait(3000) Speler levens als hartjes for i in range(player_lives): pygame.draw.circle(screen, RED, (WIDTH - 20 - i * 30, 20), 10)</description></item><item><title>Sessie 9: Demo opname</title><link>https://python.coderdojohasselt.be/sessions/python/09-boss-battle/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/09-boss-battle/demo/index.html</guid><description>Sessie 9 gebruikt pure pygame. Toon een GIF van de oplossing op de sessiepagina.
Hoe opnemen Run de oplossing: cd code/sessions/09-boss-battle/solution &amp;&amp; python main.py. Gebruik een schermrecorder: Linux: Peek of SimpleScreenRecorder. Windows: ScreenToGif. macOS: QuickTime → exporteer naar GIF via ffmpeg of Kap. Neem ~20 seconden op: doorloop alle drie de fases en toon het win-scherm. Sla op als boss-battle.gif in static/sessions/09-boss-battle/. Verwijs ernaar in de worksheet via: ![Demo](/sessions/09-boss-battle/boss-battle.gif). Mikgrootte: ~800×500 pixels, ≤ 2 MB.</description></item></channel></rss>