Dojo Defender Sessie 7: Coach-notities

Doel van deze sessie

Na deze sessie kan een ninja:

  • Zelf een feature bedenken en plannen aan de hand van een eenvoudig stappenplan
  • Bestaande code lezen en begrijpen om er iets aan toe te voegen
  • Zelfstandig een probleem oplossen met minimale coach-begeleiding

Deze sessie is anders dan alle vorige — geen stap-voor-stap instructies. De ninja kiest zelf wat hij bouwt.


Voorbereiding (30 min vóór de sessie)

  • Starter ZIP klaar op USB en de site: dojo-defender-s8-starter.zip.
  • De starter is de complete DD S7 oplossing (boss + alle features). Draai hem één keer op de dojoruimte-laptop.
  • Spreek met de andere coaches af welke ninja’s welke feature doen, zodat er variatie is in de showcase.
  • Print een paar planning-sjablonen (het Coach-geleide planning blok uit de worksheet) voor ninja’s die liever op papier werken.

Tijdsindeling (3 uur)

Deze sessie is integraal onderdeel van de normale sessie 8 (Sky Highway):

TijdActiviteit
0:00 tot 1:15Sessie 8: Sky Highway (Stap 1-4)
1:15 tot 1:30Dojo Defender intro: “Jouw game, jouw feature”
1:30 tot 1:45Feature kiezen + plannen (Coach-geleid)
1:45 tot 2:30Zelfstandig bouwen
2:30 tot 2:50Showcase
2:50 tot 3:00Buffer / opruimen

Coach-rollenspel

Deze sessie draait om zelfstandigheid. Jouw rol als coach:

  1. Niet te veel oplossen. Als een ninja vastloopt, stel vragen in plaats van antwoorden te geven:

    • “Wat gebeurt er als je op SPACE drukt?”
    • “Welke variabele moet veranderen?”
    • “Waar in de code staat het schip?”
  2. Bewaken van scope. Ninja’s willen vaak te veel tegelijk. Help ze de kleinste versie te kiezen die “werkt”. Een werkende power-up is beter dan een half afgemaakt combo-systeem.

  3. Vieren van mislukking. Als het niet werkt, is dat óók leerzaam. Laat ze vertellen wat er fout ging en wat ze ervan leerden.


Veelgestelde vragen

“Power-ups spawnen niet” Check of spawn_powerup() wordt aangeroepen waar een enemy sterft (bij de bullet-enemy collision). Ook: random.random() < 0.2 is 20% — dat is niet veel. Laat ze tijdelijk 0.5 maken om te testen.

“Spread shot schiet maar 1 kogel” De bullet.dx en bullet.dy moeten worden toegevoegd aan de bullet update. Zonder die variabelen vliegen alle kogels recht omhoog. Voeg bullet.dx = 0 en bullet.dy = -8 toe bij het aanmaken van gewone kogels, en bullet.rect.x += bullet.dx en bullet.rect.y += bullet.dy in de update loop.

“Power-up timer reset niet na restart” Vergeet niet: active_powerup = None en powerup_timer = 0 in reset_game().

“High score wordt niet opgeslagen” save_highscore() moet worden aangeroepen op het game-over scherm, voordat reset_game() wordt aangeroepen. Anders is de score al 0.

“High score.txt overschrijft steeds” De check if val > load_highscore() voorkomt dat een lagere score de hoge overschrijft. Werkt dat niet? Laat ze print() toevoegen om te debuggen.

“Het schip is onzichtbaar na een restart” ship.visible = True moet in reset_game() staan. Ninja’s vergeten dit soms.


Power-up implementatie (voor coaches)

De power-up oplossing werkt als volgt:

  • Spawn: spawn_powerup(x, y) wordt aangeroepen waar een enemy sterft. 20% kans.
  • Collect: in de game loop checken we of een power-up het schip raakt.
  • Timer: powerup_timer telt elke frame af. Bij 0 wordt active_powerup = None.
  • Spread shot: vervangt het normale schieten. In plaats van 1 kogel, 3 kogels met een hoek.
  • Shield: bij een hit wordt active_powerup = None gezet en invincible = True voor 5 seconden.
  • Speed boost: ship_speed wordt verdubbeld van 5 naar 10.

Showcase

Laat elke ninja 30 seconden presenteren. Drie vaste vragen:

  1. Wat wilde je maken?
  2. Is het gelukt?
  3. Wat was het moeilijkst?

Als coach: benoem steeds iets specifieks dat goed ging (“Mooi dat je een timer hebt toegevoegd”, “Knap dat je de high score file的工作原理 hebt uitgevogeld”).

Cliffhanger-script

“Vandaag heb je je eigen feature aan Dojo Defender toegevoegd. Volgende keer beginnen we aan een compleet nieuw spel — maar Dojo Defender blijft altijd bestaan. Neem hem mee naar huis en blijf eraan sleutelen.”