PXT: Det regner mat!
Skrevet av: Helene Isnes
Introduksjon
"Det regner mat!" er et spill som går ut på å fange flest mulig matbiter. Det fungerer slik at matbiter faller ned på skjermen og spilleren som står på bunn skal prøve å fange maten. Spilleren skal bevege seg med knappene A og B. Liv går tapt når spilleren ikke klarer å få tak i maten. Spilleren har til sammen tre liv før spillet er over.
Steg 1: Grunnlag
Det første vi skal gjøre er å kode grunnlaget for spillet. Vi skal lage mat, en spiller og sette antall liv. Vi må også starte opp noe som holder kontroll på poengsummen.
Sjekkliste
Skjermen vår består av 5x5 ledlys. Disse kan vi skru av og på med litt kode. I denne oppgaven bruker vi klosser fra Spill
-kategorien til å sette og endre hvor lysene skal være. Posisjonen til lysene blir gitt med en x- og en y-posisjon som i et rutenett. Verdien til x angir plassen til lyset bortover (horisontalt) og verdien til y angir plassen nedover (vertikalt), dette er vist på bildet under. Hjørnet øverst til venstre har verdiene (0,0) mens hjørnet nederst til høyre har verdiene (4,4).
Spilleren skal bevege seg på nederste rad til høyre og venstre. Vi vil at spiller
skal starte på midten av skjermen ved start (x: 2 og y: 4).
let spiller: game.LedSprite = null spiller = game.createSprite(2, 4)
Sett spiller til
-klossen finner du i Variabler
. Create sprite at x: 2 y: 4
-klossen finner du i kategorien Spill
i Avansert.
Det er egentlig ikke så viktig hvor vi plasserer mat
ved starten siden den kommer til å flytte på seg i neste steg. Det som er viktig er at mat
finnes på spillebrettet ved start slik at det går an å bruke variabelen senere.
let spiller = game.createSprite(2, 4) let mat = game.createSprite(2, 2) let liv = 3 game.setScore(0)
Både mat
og spiller
blir et ledlys hver på micro:biten. Hvis du vil skille litt mer mellom dem kan du få maten til å lyse litt mindre enn spilleren. Dette gjør du ved å sette sprite angir x til 0
-klossen etter sett poengsum til 0
. Bytt ut sprite
med mat
og x med lysstyrke
. Det er litt forskjell på hvordan simulatoren og micro:biten opplever lysstyrke, så imens du er i simulaturen setter du lysstyrke til 100. Når du laster spillet opp til micro:biten, endre lysstyrken til 30.
Steg 2: Mat regner
I dette steget skal vi få maten til å regne ned. Maten skal starte på et tilfeldig sted på øverste rad hver runde.
Sjekkliste
Det vi har gjort til nå er å ha satt mat
til en tilfeldig x-posisjon (et tilfeldig sted bortover). Vi har i tillegg passet på at mat
starter på øverste rad for hver runde. Det vi skal gjøre videre, er å lage kode for maten som skal regne ned.
For å få maten til å regne nedover, må vi endre posisjonen til variabelen mat
i y-retning. Vi endrer posisjonen med 1 for hver gang vi går gjennom løkka.
Hvis vi ikke legger til pause
-klosser vil maten bevege seg for fort til at vi klarer å fange den!
Steg 3: Få poeng og tap liv
Nå skal vi lage kode som enten gir spilleren poeng hvis den klarer å fange maten eller som tar bort et liv hvis spilleren ikke greier å fange den.
Sjekkliste
Vi vil at poengsummen skal øke med én hvis spilleren klarer å fange maten.
Hvis-ellers
-klossen fungerer slik at hvis spilleren får tak i maten, vil programmet kjøre koden som hører til hvis
-delen av klossen. Hvis dette ikke er sant (spilleren klarte ikke å få tak i maten denne runden), vil programmet kjøre koden som hører til ellers
-delen av klossen.
Når spiller
ikke klarer å fange maten, skal vi miste et liv.
Videre må vi sjekke om variabelen liv
er lik null, for hvis den er det, er spillet over.
basic.forever(function () { let spiller: game.LedSprite = null let mat: game.LedSprite = null mat.set(LedSpriteProperty.X, Math.randomRange(0, 4)) mat.set(LedSpriteProperty.Y, 0) basic.pause(300) for (let i = 0; i < 4; i++) { mat.change(LedSpriteProperty.Y, 1) basic.pause(300) } if (spiller.isTouching(mat)) { game.addScore(1) } else { liv += -1 if (liv == 0) { game.gameOver() } } })
Test prosjektet
Steg 4: Beveg spilleren!
Nå skal vi lage siste del av koden, nemlig koden for å bevege på spilleren!
Sjekkliste
input.onButtonPressed(Button.A, function () { let spiller: game.LedSprite = null spiller.change(LedSpriteProperty.X, -1) })
Test prosjektet
Koden din er nå ferdig!
For lett eller vanskelig? Du kan endre hastigheten maten faller ned og/eller endre antall liv man har ved start.
Utfordring
Forbedre denne siden
Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!