Sessie 6: Coach-notities
Doel van deze sessie
Aan het einde van de Basic checkpoint kan een ninja:
- De speler laten vallen dankzij
vel_yen zwaartekracht. - Correct stoppen op platforms via
colliderect. - Springen met SPATIE (alleen als
on_groundTrue is).
Wat niet verwacht wordt na sessie 6: geluid, win-scherm, dubbele sprong. Die zijn Expert-materiaal.
Voorbereiding (30 min vóór de sessie)
- Test de starter ZIP op een dojoruimte-laptop. Controleer dat
pygamegeïnstalleerd is (niet pgzero; dit is de eerste sessie met pure pygame). sounds/jump.wavaanwezig? Controleer dat het geluidsbestand in de ZIP zit.- Projecteer Stap 1 live op het scherm voordat ninjas beginnen. De sprong van pgzrun naar pygame is een mentale drempel. Leg uit dat pygame dezelfde bibliotheek is, maar zonder de pgzrun-wrapper.
Tijdsindeling (3 uur)
| Tijd | Activiteit |
|---|---|
| 0:00 tot 0:10 | Welkom, recapitulatie sessie 5 |
| 0:10 tot 0:25 | Projector: uitleg pygame game loop vs. pgzrun |
| 0:25 tot 1:30 | Zelfstandig werken: stap 1 en 2 |
| 1:30 tot 2:15 | Stretch en Expert |
| 2:15 tot 2:45 | Buffer / rondlopen / helpen |
| 2:45 tot 3:00 | Showcase + cliffhanger |
Veelgestelde vragen
“De speler valt door de platforms heen”
Controleer de volgorde: vel_y ophogen → player_rect.y aanpassen → platform-loop. Als de platform-loop vóór de beweging staat, werkt het niet. Laat de ninja de volgorde in zijn code vergelijken met de worksheet.
“De speler springt terwijl hij in de lucht is”
on_ground wordt niet correct ingesteld. Controleer dat on_ground = False staat vóór de platform-loop en alleen op True gezet wordt wanneer een botsing gedetecteerd wordt. Veelvoorkomende fout: on_ground staat globaal op True.
“Geen geluid” Twee oorzaken:
pygame.mixer.init()staat niet vóórpygame.mixer.Sound(...).- Het script wordt vanuit een andere map gestart. Python zoekt dan
sounds/jump.wavin de werkmap, niet naastmain.py. De starter gebruikt_DIR = os.path.dirname(os.path.abspath(__file__))om dit op te lossen.
“Het venster sluit meteen bij het win-scherm”
running = False stopt de game loop. Als de ninja wil dat het scherm blijft, vervang running = False door een eigen wacht-loop: pygame.time.wait(3000) gevolgd door break.
Hints voor Stretch en Expert
Geef hints, geen volledige code.
Stretch: sterren verzamelen:
Wijs op stars[:]. Zonder de kopie-slice zou je een RuntimeError krijgen bij het verwijderen tijdens het itereren. Dit is een goed leermoment over lijst-mutatie.
Expert: geluid:
Als pygame.mixer een fout geeft, controleer dan of het systeem een audiodevice heeft. In een VM of op sommige Chromebooks ontbreekt audio-output. Als fallback: sla het geluid over en focus op het win-scherm.
Dojo Defender vandaag
Dojo Defender sessie 5 wordt geïntegreerd in deze sessie. De snapshot voegt toe:
- Parallax sterren (drie lagen, scrollen ook in menu)
- Particle systeem (spawn/update/draw met alpha-fade)
- Uitlaatgassen, explosiepuin, vonkjes
- Vernietigbare asteroïden (big → med → small → particles)
Zie content/dojo-defender/session-5/ voor de volledige worksheet.
De starter ZIP staat op: /sessions/06-platformer/dojo-defender-s6-starter.zip.
De oplossing ZIP staat op: /sessions/06-platformer/dojo-defender-s6-solution.zip.
Tijdsverdeling: De eerste 75 minuten werk je aan de platformer, de resterende tijd aan Dojo Defender.
Cliffhanger-script
Lees dit voor aan de groep:
“Vandaag heeft je speler gesprongen en sterren verzameld. Volgende keer schrijven we onze EIGEN klassen: bugs die naar beneden vallen, en jij moet ze ZAP-pen voor ze je raken. En je maakt ze zelf, van nul.”