Dojo Defender Sessie 3: Coach-notities

Doel van deze sessie

Na deze sessie kan een ninja:

  • Het verschil uitleggen tussen pgzero en raw pygame
  • De game loop zelf schrijven (while running: clock.tick(60))
  • Actors omzetten naar GameObject met Surface en Rect
  • Input afhandelen met pygame.key.get_pressed() en KEYDOWN
  • Geluid laden en afspelen met pygame.mixer

Voorbereiding (30 min vóór de sessie)

  • Starter ZIPs klaar op USB en de site: dojo-defender-s4-starter.zip en dojo-defender-s4-solution.zip.
  • De starter éénmaal draaien op de dojoruimte-laptop.
  • Zorg dat de sounds klaar staan in dojo-defender-assets/sounds/, óf verwijs ninja’s naar de oplossing.
  • Leg uit waarom we overstappen: “pgzero is een trainingswieltje. Nu worden jullie échte Pygame-developers.”

Tijdsindeling (3 uur)

Deze sessie is integraal onderdeel van de normale sessie 4 (Pong). Gebruik de tijd als volgt:

TijdActiviteit
0:00 tot 1:15Sessie 4: Pong (Stap 1-4)
1:15 tot 1:30Dojo Defender intro: pgzero vs pygame uitleg
1:30 tot 2:00Verken de code + restart (Basic)
2:00 tot 2:30Geluid toevoegen (Stretch)
2:30 tot 2:50Expert: mute-knop, volume, particles
2:50 tot 3:00Showcase + cliffhanger

Veelgestelde vragen

“De afbeeldingen worden niet geladen” Waarschijnlijk mist de .png extensie. In pgzero deed die dat automatisch, in pygame niet. Controleer: GameObject('player_ship.png', ...).

"pygame.image.load geeft een fout" Het pad moet kloppen. De starter gebruikt _DIR om het script-pad te bepalen. Zet print(_DIR) om te debuggen.

“Het geluid werkt niet” Controleer of pygame.mixer.init() is aangeroepen. Zonder die regel doet pygame.mixer.Sound() niets.

“Ik hoor niks bij bg_music” pygame.mixer.music.play(-1) is nodig — zonder -1 speelt het maar één keer.

“Waarom zit alles in één while-lus?” Omdat pygame geen draw() en update() functies heeft. Alles gebeurt in de loop. Dit is hoe echte games werken: elke frame, alles opnieuw.


Hints voor Stretch en Expert

Stretch: geluid De simpelste aanpak: kopieer de sounds uit de oplossingsmap. Of download de dojo-defender-assets apart.

Expert: mute Gebruik één muted boolean. pygame.mixer.music.set_volume(0) dempt de muziek. Voor SFX moet je elke play() omwikkelen met if not muted:.

Expert: particle-effect Een simpele particle: sla (x, y, dx, dy, levensduur) op in een dict. Laat ze elke frame bewegen en vervagen. Verwijder als levensduur 0 is.


Cliffhanger-script

“Jullie hebben Dojo Defender overgezet naar echte pygame en geluid toegevoegd. Volgende keer: POWER-UPS. Schilden, speed-boosts, spread-shots. En een échte baas aan het einde van de waves.”