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_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)

TijdActiviteit
0:00 tot 0:10Welkom, terugblik sessie 8
0:10 tot 0:20Projector: HP-balk en state machine uitleggen
0:20 tot 1:30Zelfstandig werken: stap 1 en 2
1:30 tot 2:15Stretch (baas schiet terug)
2:15 tot 2:45Expert (drie fases) + buffer
2:45 tot 3:00Showcase + 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?”