Sessie 1: Coach-notities
Doel van deze sessie
Aan het einde van de Basic checkpoint kan een ninja:
- De basket horizontaal bewegen met de pijltjestoetsen links en rechts.
- Een ster zien vallen van boven naar beneden op het scherm.
- De
update()-functie lezen, begrijpen wat er staat, en zelf een kleine aanpassing doen (bijv. de snelheid verhogen).
Wat niet verwacht wordt na sessie 1: score bijhouden, collision detection, random startposities. Die komen in sessie 2.
Succes ziet er bescheiden uit: de ninja heeft het spel draaien, begrijpt de structuur van de code, en is enthousiast om volgende keer verder te gaan.
Voorbereiding (30 min vóór de sessie)
- Portable Thonny op USB: essentieel voor laptops zonder admin-rechten. Zet hem klaar zodat je niet hoeft te zoeken als het nodig is.
- Projector testen: verbinding checken, resolutie, HDMI-kabel aanwezig? Test dit vóór de ninjas binnenkomen.
- Starter ZIP klaarstaan op twee plekken: een gedeelde USB én de site (
/sessions/01-catch-the-stars/starter.zip). Wifi kan traag zijn; USB is de veiligste fallback. - Zelf de starter éénmaal runnen op de dojoruimte-laptop: zo weet je of pgzero daar correct geïnstalleerd is en zijn er geen verrassingen.
⚠️ Risico: dit is de instapsessie
Dit is de sessie met het hoogste risico op technische problemen. Verwacht installatieproblemen op ongeveer 30% van de laptops. Dat is normaal en geen reden voor paniek.
Mitigaties:
- Pair-programming waar installatie mislukt: laat twee ninjas één laptop delen. Dit werkt verrassend goed en bevordert samenwerking.
- Portable Thonny op USB als fallback: geen admin-rechten nodig.
- Tijdslimiet voor install-triage: 15 minuten totaal. Daarna pair je iedereen die nog niet draait op met iemand die wel draait, en ga je verder. Laat installatieproblemen de hele groep niet vertragen.
- Pgzero via Thonny: Tools → Manage packages → zoek
pgzero→ install. Dit duurt 1-2 minuten, maar kan vastlopen op trage wifi. Heb een USB-versie bij de hand als alternatief.
Tijdsindeling (3 uur)
| Tijd | Activiteit |
|---|---|
| 0:00 tot 0:15 | Welkom, namen leren, uitleg wat CoderDojo is |
| 0:15 tot 0:30 | Projector: uitleg Pgzero en de startcode |
| 0:30 tot 2:00 | Zelfstandig werken: checkpoints stap 1→2→3→4 |
| 2:00 tot 2:30 | Buffer / stretch / expert + rondlopen |
| 2:30 tot 2:45 | Showcase: iedereen laat zien wat ze gemaakt hebben |
| 2:45 tot 3:00 | Cliffhanger + take-home uitdeling + opruimen |
De bufferblok (2:00 tot 2:30) is bewust breed. Gebruik het voor ninjas die vast zitten, voor stretch-uitdagingen, of om één-op-één te helpen. Ga in dit blok actief rondlopen. Wacht niet tot iemand zijn vinger opsteekt.
Veelgestelde vragen
“Mijn venster opent en sluit meteen”
WIDTH en HEIGHT staan niet bovenaan het bestand, of zijn per ongeluk verwijderd. Laat de ninja naar de bovenste regels van de startcode kijken en controleer of de variabelen aanwezig zijn.
“De basket gaat door de rand”
Goed gevonden! Dit is geen bug die je nu moet fixen. Dit is een uitdaging. Vraag: “Hoe zou je kunnen voorkomen dat de basket buiten het scherm gaat?” Hint: kijk naar de waarde van basket.x en vergelijk die met 0 en WIDTH. Voorbeeld: if basket.x > 20.
“Ik heb al alles gemaakt, wat nu?” Wijs de ninja naar de neem-mee-naar-huis uitbreidingen op de sessie-pagina, of vraag hem een buddy te helpen. Coaches mogen ook mondeling een stretch-uitdaging geven.
“Pgzrun: command not found” Thonny opnieuw starten na installatie van pgzero lost dit meestal op. Als dat niet helpt, gebruik portable Thonny van de USB.
Hints voor Stretch en Expert
Geef hints, geen volledige code. De ninja moet zelf redeneren. Als iemand echt vast zit na meerdere hints, kun je verwijzen naar solution/main.py voor het complete antwoord.
Stretch: collision
star.colliderect(basket) geeft True terug als de twee rechthoeken overlappen. Reset star.y = 0 zowel bij een botsing als wanneer star.y > HEIGHT, zodat de ster opnieuw begint te vallen.
Expert: score
Declareer global score bovenaan update() vóór je score aanpast, anders geeft Python een UnboundLocalError. Zet screen.draw.text(f"Score: {score}", ...) in draw(), niet in update(). De draw()-functie wordt elke frame aangeroepen en is de juiste plek voor alles wat op het scherm verschijnt.
Cliffhanger-script
Lees dit voor aan de groep aan het einde van de sessie:
“Vandaag heb je sterren gevangen. Volgende keer komen er dingen die TERUGSLAAN. We laten ze ontploffen, met ECHT GELUID. En je krijgt je eigen ruimteschip.”
Geen Dojo Defender vandaag
Sessie 1 is bewust gericht op één ding: het eerste spel draaien en begrijpen. Dojo Defender, het grotere project dat ninjas doorheen het jaar opbouwen, start pas in sessie 2. Introduceer het vandaag niet.
Als een ninja vraagt naar Dojo Defender: “Volgende maand. Vandaag focussen we op de basis.”
Dit is een bewuste keuze: twee codebases op dag één is te veel. De focus op Catch the Stars geeft ninjas een succeservaring zonder overweldiging.
Pilot-bevindingen
(Wordt ingevuld na de pilot (Task 20).)