Dojo Defender Sessie 1: Coach-notities
Doel van deze sessie
Na deze sessie kan een ninja:
- Een lijst met asteroïden aanmaken en beheren met
Actor - Asteroïden spawnen met een timer en verwijderen als ze uit beeld zijn
- Botsingen detecteren met
colliderect - Levens bijhouden en game-over afdwingen
- Een eenvoudige explosie-animatie tonen
Voorbereiding (30 min vóór de sessie)
- Starter ZIPs klaar op USB en de site:
dojo-defender-s2-starter.zipendojo-defender-s2-solution.zip. - De starter zelf éénmaal draaien op de dojoruimte-laptop.
- Uitleggen dat Dojo Defender elke sessie terugkomt — moedig aan om de code goed te bewaren.
Tijdsindeling (3 uur)
Deze sessie is integraal onderdeel van de normale sessie 2 (Dodge Meteors). Gebruik de tijd als volgt:
| Tijd | Activiteit |
|---|---|
| 0:00 tot 1:00 | Sessie 2: Dodge Meteors (Stap 1-4) |
| 1:00 tot 1:15 | Dojo Defender intro + starter downloaden |
| 1:15 tot 1:45 | Stap 1-2: asteroïden spawnen + bewegen |
| 1:45 tot 2:15 | Stap 3: collision + levens |
| 2:15 tot 2:45 | Stap 4: explosies + invincibility |
| 2:45 tot 3:00 | Showcase + cliffhanger |
Veelgestelde vragen
“Mijn asteroïden worden niet getekend”
Waarschijnlijk staat de for-loop voor asteroïden niet in draw(), of staat die ná een return-statement.
"global geeft een fout"
global timer moet bovenaan de functie staan, vóór de eerste keer dat timer gebruikt wordt.
“Het schip is onzichtbaar na een botsing”
Controleer of ship.visible = True wordt gezet als de explosie voorbij is. De reset-gebeurtenis moet na frame 4 van de explosie komen.
“De explosie wordt niet getoond”
Vergeet niet explosion.draw() in draw() aan te roepen, en explosion_active op True te zetten bij een botsing.
Hints voor Stretch en Expert
Stretch: collision
Leg uit dat colliderect controleert of twee rechthoeken (hitboxes) elkaar overlappen. Dit is de standaardmanier in pgzero.
Expert: explosie
Het explosie-mechanisme is een handmatige frame-animatie: verander elke 5 frames de image van de Actor. Dit is een eenvoudige maar effectieve techniek.
Expert: invincibility Invincibility voorkomt dat je meteen opnieuw geraakt wordt na een explosie. Gebruik een teller die elke frame aftelt.
Cliffhanger-script
“Vandaag heb je asteroïden ontweken en zag je je schip ontploffen. Volgende keer: je ruimteschip SCHIET TERUG. Vijanden in formatie, en jij hebt lasers. Klaar om aan te vallen?”