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.zip en dojo-defender-s6-solution.zip.
  • De starter éénmaal draaien op de dojoruimte-laptop.
  • Controleer of asteroid_med.png en asteroid_small.png in de images/ 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:

TijdActiviteit
0:00 tot 1:15Sessie 6: Platformer (Stap 1-4)
1:15 tot 1:30Dojo Defender intro: parallax op het bord tekenen
1:30 tot 2:00Stap 1: parallax sterren (Basic)
2:00 tot 2:30Stap 2: particle systeem (Basic)
2:30 tot 2:50Stap 3: positie-effecten (Stretch)
2:50 tot 3:00Stap 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.”