Dojo Defender Sessie 5: Coach-notities
Doel van deze sessie
Na deze sessie kan een ninja:
- Een parallax sterrenachtergrond maken met drie lagen
- Een particle systeem bouwen met lijsten van dictionaries
- Positie-gebaseerde effecten toevoegen (uitlaatgassen, explosies)
- Recursief splitsen toepassen op asteroïden
Voorbereiding (30 min vóór de sessie)
- Starter ZIPs klaar op USB en de site:
dojo-defender-s6-starter.zipendojo-defender-s6-solution.zip. - De starter éénmaal draaien op de dojoruimte-laptop.
- Controleer of
asteroid_med.pngenasteroid_small.pngin deimages/map van de starter zitten. Die zijn toegevoegd aan de shared assets en moeten in de ZIP zitten. - Leg parallax uit op het bord: teken drie lagen sterren met verschillende snelheden.
- Leg de particle levenscyclus uit: geboren → beweegt → vervaagt → sterft.
Tijdsindeling (3 uur)
Deze sessie is integraal onderdeel van de normale sessie 6 (Platformer). Gebruik de tijd als volgt:
| Tijd | Activiteit |
|---|---|
| 0:00 tot 1:15 | Sessie 6: Platformer (Stap 1-4) |
| 1:15 tot 1:30 | Dojo Defender intro: parallax op het bord tekenen |
| 1:30 tot 2:00 | Stap 1: parallax sterren (Basic) |
| 2:00 tot 2:30 | Stap 2: particle systeem (Basic) |
| 2:30 tot 2:50 | Stap 3: positie-effecten (Stretch) |
| 2:50 tot 3:00 | Stap 4: asteroïden splitsen (Expert) + showcase |
Veelgestelde vragen
“De sterren bewegen niet”
update_stars() wordt niet aangeroepen in de game loop. Laat de ninja controleren of de functie elke frame wordt aangeroepen, ook in het menu.
“De sterren tekenen over de tekst heen”
draw_stars(screen) moet vóór de andere teken-opdrachten staan, maar na screen.fill(). De volgorde is: fill → sterren → particles → game objecten → UI tekst.
“De particles zijn te groot / te klein”
Pas de size_range aan in spawn_particles(). Tip: maak ze kleiner dan je denkt. 2-5 pixels is al groot voor een particle.
“Particles blijven zweven na een restart”
reset_game() mist particles.clear(). Alle lijsten moeten leeggemaakt worden in reset.
“De asteroïde splitst maar één keer”
De split_asteroid() functie verwijdert de originele asteroïde en voegt twee nieuwe toe. Die nieuwe hebben asteroid_size = 'med' (of 'small'). Controleer dat de nieuw aangemaakte asteroïden ook de asteroid_size property hebben.
“Na splitsen knipperen asteroïden” De nieuwe asteroïden verschijnen op dezelfde y-positie als de oude. Ze bewegen meteen naar beneden. Dat is normaal — bij een snelle game zie je het nauwelijks.
“Pygame geeft ’no module named math’”
import math staat nog niet bovenaan het bestand. Ninja’s moeten het toevoegen als ze spawn_particles() schrijven.
Hints voor Stretch en Expert
Stretch: positie-effecten De moeilijkste stap is het vinden van de juiste plek in de code om de particle-spawns in te voegen. Wijs de ninja op:
- Uitlaatgassen: bij de pijltjestoetsen-check, na
ship.rect.centerx += 5 - Explosie puin: bij
asteroids.remove(rock)in de kogel-collision loop - Vijand-sterfsparkels: bij
enemies.remove(enemy)waar de vijand onderaan verdwijnt
Expert: asteroïden splitsen
De split-functie is recursief: split_asteroid roept spawn_asteroid aan die een kleinere maat maakt. Laat ninja’s eerst de spawn_asteroid aanpassen zodat hij een size parameter accepteert, dan pas de split-functie schrijven.
Uitdaging voor snelle ninja’s: “Wat gebeurt er als de split-functie ook 3 of 4 kleinere asteroïden maakt? En wat als de kleinere asteroïden sneller zijn dan de grotere?”
Cliffhanger-script
“Vandaag heeft Dojo Defender een prachtige sterrenachtergrond gekregen, rokende uitlaatgassen, en asteroïden die in stukjes uiteenvallen. Volgende keer: POWER-UPS. Schilden die je beschermen, speed-boosts en spread-shots die drie kogels tegelijk schieten. Houd je vast.”