Sessie 8: Coach-notities

Doel van deze sessie

Aan het einde van de Basic checkpoint kan een ninja:

  • De achtergrond naadloos laten scrollen met de dubbele-blit techniek.
  • Obstakels van rechts naar links bewegen en verwijderen als ze het scherm uit zijn.
  • Levens aftrekken bij een botsing en het spel stoppen bij 0 levens.

Wat niet verwacht wordt na sessie 8: sterren, moeilijkheidsscaling, game over scherm. Die zijn Stretch/Expert-materiaal.


Voorbereiding (30 min vóór de sessie)

  • De achtergrondafbeelding in de starter moet precies WIDTH pixels breed zijn (standaard 800px) zodat de dubbele-blit naadloos werkt.
  • speed is een float. Wijs ninjas erop dat pygame.Rect alleen integers accepteert. De starter gebruikt int(scroll_x) al; controleer dat ninjas dit niet verwijderen.
  • Spawn-timer: de starter gebruikt pygame.USEREVENT + 1. Leg kort uit hoe pygame.time.set_timer werkt: het stuurt automatisch een event elke N milliseconden.

Tijdsindeling (3 uur)

TijdActiviteit
0:00 tot 0:10Welkom, terugblik sessie 7
0:10 tot 0:20Projector: scrollende achtergrond uitleggen
0:20 tot 1:30Zelfstandig werken: stap 1 en 2
1:30 tot 2:15Stretch (sterren)
2:15 tot 2:45Expert (snelheid schalen) + buffer
2:45 tot 3:00Showcase + cliffhanger

Veelgestelde vragen

“De achtergrond flikkert” int(scroll_x) ontbreekt bij het blitten. pygame.Surface.blit verwacht integers; als je een float doorgeeft, maakt pygame er intern één van maar dit kan frameconsistentieproblemen geven. Controleer beide blit-aanroepen.

“Obstakels worden niet verwijderd” Controleer dat de obstacles.remove(obs) binnen de colliderect-check staat, niet erbuiten. Veelvoorkomend: de if staat op de verkeerde inspringing.

“Speed wordt steeds sneller maar obstakels spawnen niet vaker” pygame.time.set_timer moet elke frame opnieuw aangeroepen worden als het interval verandert. Voeg dit toe aan de game loop, niet eenmalig bij initialisatie. Alternatief: gebruik een frame-teller in plaats van een timer.

“Game over scherm verdwijnt meteen” pygame.time.wait(3000) werkt buiten de game loop. Maar als running = False al gezet is vóór de extra blit en wait, werkt het niet. Zorg dat de game over blit en wait na de while running loop staan, of gebruik een aparte game_over-vlag.


Hints voor Stretch en Expert

Stretch: sterren: Sterren zijn ook pygame.Rect-objecten. Wijs ninjas erop dat star.center een tuple (x, y) geeft, handig voor pygame.draw.circle.

Expert: snelheid schalen: speed = BASE_SPEED + score * 0.1 is eenvoudig maar effectief. Leg uit waarom we max(500, ...) gebruiken bij het spawn-interval: zonder minimum zou het interval negatief of nul worden bij een hoge score.


Dojo Defender vandaag

Sessie 7 van Dojo Defender = ninja’s kiezen en bouwen hun eigen feature. Dit gebeurt in de tweede helft van de sessie (na Sky Highway).

Voorbereiding

  • Starter ZIP: dojo-defender-s8-starter.zip in code/sessions/08-sky-highway/dojo-defender-starter/ — dit is de complete DD S6 oplossing (met boss).
  • Print de planning-sjablonen uit de Dojo Defender worksheet.
  • Spreek met coaches af wie welke ninja’s begeleidt tijdens het Dojo Defender deel.

Tijd

TijdActiviteit
1:15 tot 1:30Dojo Defender intro
1:30 tot 1:45Feature kiezen + plannen
1:45 tot 2:30Zelfstandig bouwen
2:30 tot 2:50Showcase

Mogelijke features (voor coaches)

  • Power-ups (makkelijk): vijanden droppen power-ups (spread shot, shield, speed boost) met 20% kans.
  • High score (makkelijk): bewaar hoogste score in highscore.txt, toon op menu en game-over.
  • Moeilijkheid (makkelijk): pas spawn-interval, vijand-snelheid of aantal levens aan.
  • Nieuwe vijand (moeilijk): een vijand die een spoor van deeltjes achterlaat.
  • Eigen idee (alle niveaus): ninja bedenkt zelf een feature.

Bewaken: Ninja’s willen vaak te veel tegelijk. Help ze de kleinste werkende versie kiezen.

Cliffhanger-script

Lees dit voor aan de groep:

“Vandaag heeft je schip een eindeloze weg gevlogen. Volgende keer komt er iemand die TERUGVECHT: een baas met drie fases, een HP-balk, en kogels die op jou afkomen. Kan jij hem verslaan?”