← Back to CoursesMicro:bit: De Clubhut
MISSIE 10★★★★

De Clubhut · micro:bit

Vanghet lichtje

Wat bouw je? Een echt arcadespel: een lichtje valt, jij vangt het met A en B. Elke vangst is een punt. Mis je, dan is het game over.
Brecht Corbeel · schoolium.me
MISSIE 10

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.

Level 10 ★★★★Tijd 75 minVoor 11-13 jaar

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

1

Maak de speler

Spel
Open Geavanceerd en klik op Spel. Maak een variabele speler en zet in bij opstarten: stel speler in op maak figuurtje op x: 2 y: 4. Dat is het middelste lichtje van de onderste rij.
Jouw blokken in MakeCode
jouw blokken
De simulator
simulator
Toon de code (JavaScript)
let speler = game.createSprite(2, 4)
Tip. x telt van links (0) naar rechts (4), y van boven (0) naar onder (4).
2

Links en rechts

Spel
Zet bij knop A het blok speler verander x met -1 (een stap naar links) en bij knop B met 1 (naar rechts).
Jouw blokken in MakeCode
jouw blokken
De simulator
simulator
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)
})
Gelukt als ... Druk op A en B: het lichtje onderaan schuift heen en weer.
3

Het vallende lichtje

Spel
Maak een tweede figuurtje lichtje, bovenaan op een willekeurige x. Laat het in de hele tijd elke 400 ms één rij zakken met lichtje verander y met 1.
Jouw blokken in MakeCode
jouw blokken
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)
})
4

Gevangen of game over?

Logisch
Zet eronder een als ... dan ... anders als. Raakt het lichtje de speler (raakt ... aan?), dan krijg je een punt en begint het lichtje weer bovenaan. Staat het onderaan (y = 4) zonder te raken: je bent af.
Jouw blokken in MakeCode
jouw blokken
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()
    }
})
Werkt het niet? Meteen af? Kijk of het raken-blok boven de y-controle staat. De volgorde telt.
5

Speel!

Simulator
Speel in de simulator met A en B. Ben je af, dan toont de micro:bit je score. Daag nu iemand uit op de echte micro:bit.
De simulator
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?

Er is geen fout antwoord. Klik op een keuze en lees de gevolgen. Bespreek ze met je club.

Bonuslevels

Bonuslevel 1
Levels: gebruik een variabele snelheid in plaats van 400, en maak ze kleiner na elke vangst.
Bonuslevel 2
Drie levens: stel leven in op 3 uit Spel. Bij een misser verlies je een leven in plaats van meteen af te zijn.
Eindbaas-level
Een power-up: een tweede lichtje dat soms valt. Vang je het, dan gaat alles even trager.

Eindbaas-vragen

Niet opzoeken: denk, test, en schrijf je antwoord op.

Missie geslaagd als ...

Woorden voor je codeboek

figuurtje (sprite)één lichtje dat je in een spel kan verplaatsen
x en ykolom en rij van een lichtje, van 0 tot 4
spellushet stuk code dat steeds opnieuw beweegt, controleert en punten geeft
je bent afgame over: het spel stopt en toont de score
Download als PDFGewone A4: één pagina per blad. A5: boekjesformaat. Vouw-A4: dubbelzijdig, korte kant omslaan.