Hvem er hurtigst? Lav et reaktionsspil for to med micro:bit
Vent, vent … NU! Når lampen tænder, gælder det om at trykke først. micro:bitten viser, hvem der vandt, og holder styr på point. Du lærer while-løkker, og, ikke og tilfældige tal.

I dette spil skal I være to. micro:bitten venter et tilfældigt stykke tid og tænder så en lampe midt på skærmen. Den, der først trykker på sin knap, vinder runden. En pil viser, hvem der vandt, og et tal viser, hvor mange point vinderen har. Ingen ved, hvornår lampen tænder – så I skal være klar hele tiden!
Før du starter
Spillet virker på både micro:bit V1 og V2. Du skriver koden i MakeCode i browseren. Brikkerne står her med de danske navne, som MakeCode viser, når din browser er sat til dansk. Står din MakeCode på engelsk, så står de engelske navne i parentes.
Sådan gør du
- Åbn MakeCode, og lav et nyt projekt, der hedder Reaktion.
- Klik på Variabler (Variables) og Opret en variabel… (Make a Variable…), og lav to variabler: pointA og pointB. Sæt brikkerne sæt pointA til 0 og sæt pointB til 0 (set … to 0) ind i når programmet starter (on start).
- Byg begyndelsen af for altid (forever): ryd skærmen (clear screen), pause (ms) 1000 og en pause (ms) mere med vælg tilfældig fra 0 til 4000 (pick random 0 to 4000) fra Matematik (Math). Så venter micro:bitten mindst 1 sekund og højst 5 sekunder.
- Tænd lampen i midten med tænd LED x 2 y 2 (plot x 2 y 2) fra LED. Lamperne er nummereret fra 0 til 4 både vandret og lodret, så 2 er midten.
- Nu skal micro:bitten vente, så længe ingen af knapperne er trykket ned. Tag mens (while) fra Løkker (Loops). Byg betingelsen med og (and) og to gange ikke (not) fra Logik (Logic) og to gange der trykkes på knappen (button is pressed) fra Input – én med A og én med B. Læg en kort pause (ms) 20 ind i løkken.
- Find vinderen med hvis … så (if … then) fra Logik. Tryk på ⊕ nederst på blokken, indtil der står ellers hvis (else if). En tom ellers gør ikke noget. Vandt A, så læg 1 til pointA med ændr pointA af 1 (change pointA by 1), vis en pil mod venstre med vis pil Vest (show arrow West), og vis pointA med vis nummer (show number). Gør det samme for B med pilen Øst (East).
- Slut af med pause (ms) 1000, så I kan nå at se tallet, før næste runde starter. Brug søgefeltet over kategorierne, hvis du ikke kan finde en blok.
- Klik på Hent (Download), og læg koden over på micro:bitten. Sæt batteripakken til.
- Læg micro:bitten på bordet mellem jer med lamperne opad. Den, der sidder til venstre, er spiller A og trykker på knap A. Den, der sidder til højre, er spiller B. Hold fingeren klar – og tryk, så snart lampen tænder!
Blokkene
når programmet starter
sæt pointA til 0
sæt pointB til 0
for altid
ryd skærmen
pause (ms) 1000
pause (ms) (vælg tilfældig fra 0 til 4000)
tænd LED x 2 y 2
mens <<ikke <der trykkes på knappen A>> og <ikke <der trykkes på knappen B>>>
udfør
pause (ms) 20
hvis <der trykkes på knappen A> så
ændr pointA af 1
vis pil (Vest)
vis nummer (pointA)
ellers hvis <der trykkes på knappen B> så
ændr pointB af 1
vis pil (Øst)
vis nummer (pointB)
pause (ms) 1000Samme program i MakeCode Python
Skift fra Blokke til Python øverst i MakeCode for at se koden. Du kan også gøre det omvendt: Skriv Python-koden, og skift til Blokke – så bygger MakeCode blokkene for dig.
pointA = 0
pointB = 0
def on_forever():
global pointA, pointB
basic.clear_screen()
basic.pause(1000)
basic.pause(randint(0, 4000))
led.plot(2, 2)
while not (input.button_is_pressed(Button.A)) and not (input.button_is_pressed(Button.B)):
basic.pause(20)
if input.button_is_pressed(Button.A):
pointA += 1
basic.show_arrow(ArrowNames.WEST)
basic.show_number(pointA)
elif input.button_is_pressed(Button.B):
pointB += 1
basic.show_arrow(ArrowNames.EAST)
basic.show_number(pointB)
basic.pause(1000)
basic.forever(on_forever)Sådan virker det
- mens-løkken kører, så længe både ikke A og ikke B er sande – altså så længe ingen trykker. I samme øjeblik som nogen trykker, stopper løkken.
- Bagefter tjekker hvis-blokken, hvilken knap der er trykket ned. Pausen på 20 millisekunder i løkken er så kort, at selv et hurtigt tryk bliver opdaget.
- Hvorfor en enkelt lampe og ikke et ikon? vis ikon holder en pause på 0,6 sekund, efter at ikonet er tegnet. I den tid kigger micro:bitten ikke på knapperne. Trykker begge spillere i den tid og holder knappen nede, vinder A – fordi koden tjekker A først. tænd LED holder ingen pause.
💡 Har du ikke din micro:bit ved hånden? Prøv spillet i simulatoren til venstre i MakeCode, og klik på knapperne A og B med musen.
💡 Til forældre: Spillet er godt til to, men I kan også holde turnering: Vinderen af hver runde bliver siddende, og en ny udfordrer prøver. Har I ingen micro:bit, så spørg på skolen eller biblioteket, om I kan låne en.
Vil du lave mere med micro:bit? Prøv skattejagten med to micro:bits, eller tag forløbet micro:bit – fra første blink til robot.
🧠 Udfordring – prøv selv
Find snyderen! Lige nu kan man vinde ved at holde sin knap nede, før lampen tænder – så stopper mens-løkken med det samme. Kan du forhindre det? Tip: Lige efter den tilfældige pause skal micro:bitten tjekke, om en af knapperne allerede er trykket ned. Er den det, så vis ikonet "nej" (et kryds), og spring resten af runden over. Brug en "hvis … så … ellers", hvor resten af runden ligger under "ellers".
Fluebenet gemmes kun i din browser og samler stempler i dit kodepas.
👩🏫 Til læreren – brug projektet i undervisningen
- Fag
- Natur/teknologi, Matematik
- Klassetrin
- 4.–8. klasse
- Tid
- 2 lektioner à 45 min
- Teknologiforståelse
- Computationel tankegang, Teknologisk handleevne, Digital design og designprocesser
Læringsmål
- Eleverne kan bruge en mens-løkke til at vente på, at noget sker.
- Eleverne kan bruge betingelser med og og ikke til at afgøre, hvem der trykkede først.
- Eleverne kan bruge tilfældige tal til at gøre spillet uforudsigeligt og forklare, hvorfor det er nødvendigt.
- Eleverne kan finde en fejl, der gør det muligt at snyde, og rette den.
Forberedelse og materialer
- En micro:bit (V1 eller V2) med USB-kabel og evt. batteripakke pr. makkerpar.
- Afprøv makecode.microbit.org på skolens computere, og test, at I kan overføre et program til micro:bitten.
- MakeCode kræver ingen konto. Projekterne gemmes i browseren eller som fil.
- Simulatoren i MakeCode kan bruges, hvis der ikke er micro:bits nok, men spillet er sjovest på en rigtig micro:bit.
Forslag til forløb
- Opvarmning (10 min): Hvad er reaktionstid? Lad eleverne prøve at gribe en lineal, som en makker slipper.
- Byg programmet (30 min): Eleverne følger "Sådan gør du" og bygger blokkene til den tilfældige pause, lampen og knapperne.
- Spil og point (20 min): Makkerparrene overfører programmet og spiller mod hinanden. De holder øje med, at pointtællingen virker.
- Find snyderen (15 min): Hvad sker der, hvis man holder knappen nede, før lampen tænder? Eleverne forklarer fejlen og forsøger at rette den.
- Opsamling (15 min): Gennemgå "Sådan virker det". Tal om løkken, betingelserne og hvorfor pausen skal være tilfældig.
Differentiering
- Hvis det går hurtigt: Eleverne retter snydefejlen (projektets udfordring), viser MakeCode Python ved siden af blokkene eller laver en sejr ved fem point.
- Hvis det driller: Byg spillet for én spiller først: vent på lampen, tryk på A, og vis et flueben. Tilføj spiller to bagefter.
Spørgsmål til samtale
- Hvorfor skal pausen være tilfældig? Hvad ville der ske, hvis den altid var lige lang?
- Hvordan opdagede I snydefejlen? Hvorfor er det vigtigt, at dem, der laver spil, tester, om man kan snyde?
- Hvor bruges reaktionstid i virkeligheden – fx i trafikken eller i sport?
Lærerarket er vejledende og skrevet af CodingKids. Se også EMU's materialer om teknologiforståelse.
Oversat og bearbejdet af CodingKids efter et projekt fra Raspberry Pi Foundation. Ændret: dansk tekst og danske bloknavne, signalet er én lampe (tænd LED) i stedet for et billede, så ingen tryk går tabt i billedets pause, pointtællingen (en udfordring i originalen) er med, og MakeCode Python er tilføjet. Original: Reaction. Denne side deles under licensen CC BY-SA 4.0.