Week 31 · Programmeerweek 1: de spellogica

De kast staat er, de elektronica is bekabeld — nu moet ze een spél worden. Deze week krijgt de eigen Arduino de volledige spellogica: score en ballen als variabelen, sensor-events met ontdendering, een live scorebord en balverlies-detectie via de drain-sensor. We beginnen niet met blokken slepen, maar met een flowchart van het hele spel — pas als dat klopt op papier, klopt het straks ook in mBlock.

LPD 20 · 22 missie: 40 XP · logboek: 10 XP

Lesdoelen

Lesverloop (5 lesuren)

BlokDuurFaseWat gebeurt er
115 minInstapTerugblik: de kast van vorige week is bekabeld maar "dom" — een LED brandt niet vanzelf bij een treffer. Vraag: hoe wéét de kast straks dat je verloren hebt? Vandaag bouwen we het brein.
145 minInstructieKlassikaal het flowchart-schema doorlopen (zie hieronder): start → ballen/score initialiseren → wachten op elke sensor → balverlies? → volgende bal of game-over. Iedereen tekent zelf mee op papier — dit wordt je bouwplan voor de rest van de week.
250 minZelfstandigTussendoel: variabelen + score-events werken. Score- en ballen-variabele aanmaken, score-sensoren omzetten naar "verander score met …" mét ontdendering (korte blokkeertijd na elke trigger).
350 minZelfstandigTussendoel: het display leeft mee. Na elke score-aanpassing meteen "toon score op display" — test met de vinger op de sensor: telt hij precies één keer per tik?
450 minZelfstandigTussendoel: balverlies werkt. De drain-sensor herkennen, "verander ballen met -1", en de check "als ballen = 0 dan game-over-show" bouwen (zie blokcode hieronder).
535 minTestenSpeel drie volledige ballen op je eigen kast: klopt de score bij elke sensor? Stopt het spel na precies drie ballen? Wie klaar is: eerste sterretjes-doel verkennen (vooruitblik week 32).
515 minAfsluitingLogboek: foto van je flowchart + een filmpje/foto van een score-moment. Opruimen, XP-moment.

Instructie: eerst de flowchart, dan de code

1 · Flowchart van het hele spel

Elke pijl in dit schema wordt straks een blok of een groepje blokken in mBlock. Volg de lijnen: bij elke sensor-treffer kom je terug bij "wacht tot sensor", tot de bal in de drain valt — dán pas telt er een bal af.

START — reset Ballen ← 3 Score ← 0 Wacht op startknop Wacht tot een sensor wordt geraakt (ontdenderd) Score-sensor geraakt? ja Score += punten Speel effect (LED / geluid) terug nee Ballen ← Ballen − 1 Ballen = 0? nee — volgende bal ja Game-over-show (LED-patroon + geluid) opnieuw spelen

Print- of papierversie: laat leerlingen dit schema eerst zelf natekenen (met eigen pijlen) vóór ze het overtypen naar mBlock — dat voorkomt "blok voor blok" programmeren zonder overzicht.

2 · De bouwstenen in code

  • Variabelen vóór de lus: score en ballen worden precies één keer gezet, bij de start — niet bij elke ronde van de lus (denkvraag 4 uit het Blokkenboek).
  • Sensor-event + ontdendering: na elke trigger een korte "wacht 0,2 s" vóór de sensor opnieuw gelezen wordt, anders telt één treffer soms dubbel of driedubbel.
  • Display-update: zet het "toon score op display"-blok meteen ná elke "verander score met …" — zo loopt het scorebord altijd gelijk met de werkelijke score.
  • Drain-sensor: dezelfde sensortechniek als je score-sensoren, maar dan in de uitvalgoot — geen punten, wel "verander ballen met -1".
Balverlies-logica: van drain-sensor tot game-over
wacht tot drain-sensor = geraakt
verander ballen met -1
als ballen = 0 dan
speel game-over-jingle op pin 8
toon "GAME OVER"-patroon op LED's

Oefen dit eerst als blokpuzzel 5 in het Blokkenboek (spelstart) — de balverlies-logica hierboven is de natuurlijke vervolgstap.

Waarom ontdenderen zo belangrijk is Een mechanische sensor "trilt" bij het indrukken enkele milliseconden na tussen aan en uit — zonder ontdendering telt de Arduino dat als 5 of 10 treffers in plaats van 1. Een korte wachttijd (0,15-0,3 s) na elke trigger lost het op. Zie ook de instructiekaart van week 23.

Opdrachten

Kernopdracht (iedereen)

  1. Teken de flowchart van het hele spel op papier.
  2. Maak de variabelen score en ballen aan, initialiseer ze vóór de lus.
  3. Programmeer elke score-sensor als event met ontdendering.
  4. Koppel na elke score-aanpassing meteen de display-update.
  5. Bouw de balverlies-logica: drain-sensor → ballen -1 → check op 0.
  6. Test: speel 3 volledige ballen. Klopt score én game-over?

Basis-pad

Werk met 1 score-sensor (vaste +10) en 1 drain-sensor. Gebruik het voorbeeldschema hierboven letterlijk als bouwplan — elke rechthoek wordt één stukje code, in dezelfde volgorde als het schema.

Uitbreidingen

  • Verschillende puntenwaarden: elke sensor een eigen aantal punten (bumper = 10, poortje = 25).
  • Voorproefje combo's: noteer op papier hoe je twee sensoren "kort na elkaar" zou kunnen herkennen — volgende week bouw je dit echt.
  • Eigen game-over-animatie: een uniek LED-patroon dat alleen bij game-over verschijnt.

Materiaal deze week

Leerkracht-hoek
Side quests die hier mooi bij passen Debug-Detective (leerkracht saboteert de ontdendering: los het op) · Helper (een klasgenoot helpen met de balverlies-logica) · Verslaggever (de flowchart als glashelder schema in het logboek).
Week 30 · Elektronica-week Week 32 · Programmeerweek 2: de finesse