Sessie 9: Coach-notities
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_hplaten 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_HPmoet consistent zijn in de hele code. Als ninjas dit veranderen, moeten ze ook de HP-balkberekening aanpassen.- Controleer de starter:
player_bulletsenboss_bulletszijn 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.
“HP-balk toont een negatieve breedte bij HP < 0”
Voeg een clamp toe: breedte = max(0, int(300 * boss_hp / BOSS_MAX_HP)). Alternativ: stop de game loop zodra boss_hp <= 0 en toon het win-scherm.
“Baas-kogels gaan door de speler heen”
Controleer dat de player_rect correct ingesteld is (niet op positie 0,0 door een initialisatiefout). Controleer ook of b.colliderect(player_rect) vóór of ná het tekenen van de kogel staat: dit maakt niet uit voor correctheid, maar is verwarrend als de kogel al getekend is maar dan “teruggespoeld” wordt.
“Fase 3 spawnt geen dubbele kogels”
Controleer dat boss_phase correct ingesteld wordt vóór de shoot-code. Als de phase-logica ná de shoot-timer staat, gebruikt de shoot-code de vorige phase. Zet de phase-update altijd bovenaan de game loop.
Hints voor Stretch en Expert
Stretch: baas schiet:
boss_shoot_interval = 60 betekent elke seconde bij 60 FPS. Verlaag dit voor hogere moeilijkheid. Wijs ninjas op het patroon: timer ophogen → check → reset en spawn.
Expert: drie fases:
De truc met boss_speed = boss_speed_abs * (1 if boss_speed > 0 else -1) bewaard de richting terwijl de snelheid verandert. Dit is een goed moment om de ternaire operator in Python te bespreken.
Cliffhanger-script
Lees dit voor aan de groep:
“Vandaag heb je een baas verslagen in drie fases. Volgende keer is er geen baas, geen obstakels, geen regels: jij beslist ALLES. Jouw eigen spel, van nul. Wat ga jij bouwen?”