Sami en Noor hebben al weken een wedstrijd: wie is de beste gamer van de Clubhut? Telkens eindigt het in "jij had een betere controller".
"Dan maken we een spel waar niemand een voordeel heeft," zegt Lien. "Zelfde toestel, zelfde regels, zelfde snelheid."
Jouw missie: bouw het spel, en versla daarna de highscore van je beste vriend.

Zo ziet het eruit als het af is

Echte schermafbeelding uit de simulator van MakeCode.
Skills die je vrijspeelt
- Figuurtjes (sprites) maken met 'maak figuurtje op x: y:'
- Een figuurtje verplaatsen met de knoppen
- Controleren of twee figuurtjes elkaar raken
- Een score bijhouden en 'game over' (je bent af)
Je uitrusting
- MakeCode, nieuw project 'vanghetlichtje'
- Een micro:bit, liefst met batterijpakje
- Wat je leerde over variabelen en 'als ... dan' in de vorige boekjes
- Een tegenstander
Hoe werkt een spel op 25 lampjes?
Een figuurtje (sprite) is één lichtje met een plaats: x is de kolom (0 links, 4 rechts), y de rij (0 boven, 4 onder). Bewegen is gewoon: x of y veranderen. De micro:bit tekent het scherm zelf opnieuw.
Elk arcadespel draait in een spellus: wacht even, beweeg, kijk of er iets botst, deel punten uit, opnieuw. Hier is 'de hele tijd' je spellus. Hoe korter de pauze, hoe sneller het spel.

Stap voor stap
Maak de speler
Spel

Toon de code (JavaScript)
let speler = game.createSprite(2, 4)

Links en rechts
Spel

Toon de code (JavaScript)
let speler = game.createSprite(2, 4)
input.onButtonPressed(Button.A, function () {
speler.change(LedSpriteProperty.X, -1)
})
input.onButtonPressed(Button.B, function () {
speler.change(LedSpriteProperty.X, 1)
})

Het vallende lichtje
Spel
Toon de code (JavaScript)
let speler = game.createSprite(2, 4)
let lichtje = game.createSprite(randint(0, 4), 0)
input.onButtonPressed(Button.A, function () {
speler.change(LedSpriteProperty.X, -1)
})
input.onButtonPressed(Button.B, function () {
speler.change(LedSpriteProperty.X, 1)
})
basic.forever(function () {
basic.pause(400)
lichtje.change(LedSpriteProperty.Y, 1)
})
Gevangen of game over?
Logisch
Toon de code (JavaScript)
let speler = game.createSprite(2, 4)
let lichtje = game.createSprite(randint(0, 4), 0)
game.setScore(0)
input.onButtonPressed(Button.A, function () {
speler.change(LedSpriteProperty.X, -1)
})
input.onButtonPressed(Button.B, function () {
speler.change(LedSpriteProperty.X, 1)
})
basic.forever(function () {
basic.pause(400)
lichtje.change(LedSpriteProperty.Y, 1)
if (lichtje.isTouching(speler)) {
game.addScore(1)
lichtje.set(LedSpriteProperty.Y, 0)
lichtje.set(LedSpriteProperty.X, randint(0, 4))
} else if (lichtje.get(LedSpriteProperty.Y) == 4) {
game.gameOver()
}
})

Speel!
Simulator
Toon de code (JavaScript)
let speler = game.createSprite(2, 4)
let lichtje = game.createSprite(randint(0, 4), 0)
game.setScore(0)
input.onButtonPressed(Button.A, function () {
speler.change(LedSpriteProperty.X, -1)
})
input.onButtonPressed(Button.B, function () {
speler.change(LedSpriteProperty.X, 1)
})
basic.forever(function () {
basic.pause(400)
lichtje.change(LedSpriteProperty.Y, 1)
if (lichtje.isTouching(speler)) {
game.addScore(1)
lichtje.set(LedSpriteProperty.Y, 0)
lichtje.set(LedSpriteProperty.X, randint(0, 4))
} else if (lichtje.get(LedSpriteProperty.Y) == 4) {
game.gameOver()
}
})

Testen en op je micro:bit
Eerst in de simulator
Links in de editor staat de simulator: een micro:bit op je scherm. Telkens je iets verandert, start hij opnieuw. Klik op A en B, of op SHAKE om te schudden. Sensoren krijgen een schuifje of bolletje waarmee je zelf licht, warmte of richting kiest.
Dan op je echte micro:bit
Steek de micro:bit met de USB-kabel in de computer en klik op Downloaden. Heb je hem gekoppeld (basisboekje), dan gaat je programma er meteen op. Anders krijg je een bestand dat eindigt op .hex: sleep het naar de schijf MICROBIT. Het gele lampje achteraan knippert. Stopt het? Dan draait je code.

Kies je pad
Je bent goed, het spel wordt saai. Wat verander je?
Pauze van 400 naar 250. Spannend! Maar beginners zijn na twee seconden af en willen niet meer spelen.
Begin traag en maak elke vangst de pauze 10 ms korter. Iedereen kan starten, en elke ronde voelt als een nieuw level.
Er is geen fout antwoord. Klik op een keuze en lees de gevolgen. Bespreek ze met je club.
Bonuslevels
Eindbaas-vragen
Niet opzoeken: denk, test, en schrijf je antwoord op.


