User Tools

Site Tools


playground:playground

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
playground:playground [2020/04/15 00:01]
royeven
playground:playground [2020/04/15 09:51] (current)
royeven
Line 33: Line 33:
 {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Asekvens%20%3D%20%22ABCD%22%0D%0Abasic.showString(sekvens.charAt(0))%0D%0Abasic.showString(sekvens.charAt(1))%0D%0Abasic.showString(sekvens.charAt(2))%0D%0Abasic.showString(sekvens.charAt(3))%0D%0Abasic.showString(sekvens.charAt(4))%0D%0A%60%60%60 100%,800 noscroll noborder left}} {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Asekvens%20%3D%20%22ABCD%22%0D%0Abasic.showString(sekvens.charAt(0))%0D%0Abasic.showString(sekvens.charAt(1))%0D%0Abasic.showString(sekvens.charAt(2))%0D%0Abasic.showString(sekvens.charAt(3))%0D%0Abasic.showString(sekvens.charAt(4))%0D%0A%60%60%60 100%,800 noscroll noborder left}}
  
-For å unngå slike situasjoner pleier man ofte å bruke en løkke med en variabel kalt //indeks// til å hente ut elementer fra en slik tekst. Dersom //sekvens// er 'ABCD' vil man bruke en løkke slik at indeks får verdiene mellom 0 og 3. Merk at i eksemplet bruker man et triks hvor maks-verdien til //indeks// blir satt til én mindre enn lengden på //sekvens//. Ettersom //sekvens// har en lengde på 4 tegn, setter man en maks-grense på én mindre, altså 3. Denne gang skal D'en bli stående på skjermen, for denne programmet vil kun hente ut gyldige indekser mellom 0 og 3:+For å unngå slike situasjoner pleier man ofte å bruke en løkke med en variabel kalt //indeks// til å hente ut elementer fra en slik tekst. Dersom //sekvens// er 'ABCD' vil man bruke en løkke slik at indeks får verdiene mellom 0 og 3. Merk at i eksemplet bruker man et triks hvor maks-verdien til //indeks// blir satt til én mindre enn lengden på //sekvens//. Ettersom //sekvens// har en lengde på 4 tegn, setter man en maks-grense på én mindre, altså 3. Denne gang skal D'en bli stående på skjermen, for dette programmet vil kun hente ut gyldige indekser mellom 0 og 3:
 {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Asekvens%20%3D%20%22ABCD%22%0D%0Afor%20(let%20indeks%20%3D%200%3B%20indeks%20%3C%3D%20sekvens.length%20-%201%3B%20indeks%2B%2B)%20%7B%0D%0A%20%20%20%20basic.showString(sekvens.charAt(indeks))%0D%0A%7D%0D%0A%60%60%60 100%,800 noscroll noborder left}} {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Asekvens%20%3D%20%22ABCD%22%0D%0Afor%20(let%20indeks%20%3D%200%3B%20indeks%20%3C%3D%20sekvens.length%20-%201%3B%20indeks%2B%2B)%20%7B%0D%0A%20%20%20%20basic.showString(sekvens.charAt(indeks))%0D%0A%7D%0D%0A%60%60%60 100%,800 noscroll noborder left}}
  
Line 67: Line 67:
 {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Alet%20indeks%20%3D%200%0D%0Ainput.onButtonPressed(Button.A%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22A%22)%20%7B%0D%0A%20%20%20%20%09%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%09%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0A%60%60%60 100%,400 noscroll noborder left}} {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Alet%20indeks%20%3D%200%0D%0Ainput.onButtonPressed(Button.A%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22A%22)%20%7B%0D%0A%20%20%20%20%09%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%09%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0A%60%60%60 100%,400 noscroll noborder left}}
  
-Når du trykker på knapp A må du sjekke om tegnet ved posisjon //indeks// faktisk var en A. Dersom det var det har du husket riktig - i så fall skal du gi deg selv ett nytt poeng og gå ett hakk videre i //sekvens//. Dersom tegnet ved posisjon //indeks// ikke var en A har du husket galt og må begynne på nytt igjen. Du skal også miste ett poeng for å ha husket galt.+Når du trykker på knapp A må du sjekke om tegnet ved posisjon //indeks// faktisk var en A. Dersom det var det har du husket riktig - i så fall skal du gå ett hakk videre i //sekvens//. Dersom tegnet ved posisjon //indeks// ikke var en A har du husket galt og må begynne på nytt igjen. Du skal også miste ett poeng for å ha husket galt.
 <hidden Tips 1>Du trenger kommandoer fra menyene for **Variabler** og **Spill**</hidden> <hidden Tips 1>Du trenger kommandoer fra menyene for **Variabler** og **Spill**</hidden>
 <hidden Tips 2>Dersom du husket riktig bokstav og skal gå videre i //sekvens// er det tilstrekkelig å endre //indeks// med 1. Dermed er du klar til å sjekke neste verdi i //sekvens// ved neste knappetrykk.</hidden> <hidden Tips 2>Dersom du husket riktig bokstav og skal gå videre i //sekvens// er det tilstrekkelig å endre //indeks// med 1. Dermed er du klar til å sjekke neste verdi i //sekvens// ved neste knappetrykk.</hidden>
Line 75: Line 75:
 [[#losningsforslag_3|Se her for løsningsforslag.]] [[#losningsforslag_3|Se her for løsningsforslag.]]
  
 +====== Videre arbeid ======
 +  - I løsningsforslagene er det ikke tatt med funksjonalitet for å endre poengsummer. Dette blir din jobb. Du skal gi deg selv ett poeng for hver gang du har husket hele sekvensen riktig. Hvor skal du legge inn denne funksjonen? Du skal også miste ett poeng for hver gang du husker sekvensen feil.
 +  - Kanskje du kan endre på spillet slik at du til å begynne med har f.eks. ti liv. Hver gang du husker sekvensen feil mister du ett liv?
 +  - **Spill**-menyen inneholder en nedtellingsfunksjon. Kan du modifisere spillet slik at hver omgang varer i f.eks. 2 minutter. Hva blir den lengste sekvensen du greier å huske i løpet av disse to minuttene?
 +  - I dette spillet brukes variabelen //indeks// til mye forskjellig - bl.a. lagrer den informasjon om hvilket tegn i //sekvens// spilleren er forventet å trykke på. Når man trykker riktig blir //indeks// øket med 1 for å sjekke neste tegn. Ser du sammenhengen mellom å øke verdien til //indeks// for hvert knappetrykk og det eksemplet hvor en for-løkke går gjennom alle gyldige verdier av //indeks//? I begge tilfeller begynner vi med at //indeks// er 0. Så blir //indeks// endret, først til 1, deretter til 2, 3 og så videre. Når //indeks// øker og blir like stor som lengden av //sekvens// er ikke //indeks// lenger en gyldig posisjon i //sekvens//. Det betyr at du har kommet til slutten av //sekvens// uten feil, og derfor er klar for å legge til et nytt tegn i //sekvens//. Les grundig over programmet ditt og sørg for at du forstår hvordan variablene //indeks// og //sekvens// fungerer sammen, her kan du lære mye om indekser og null-indeksert informasjon som f.eks. en tekst eller en tabell.
  
 ====== Løsningsforslag ====== ====== Løsningsforslag ======
Line 96: Line 101:
 [[#oppdrag_3|Se her for oppdraget.]] [[#oppdrag_3|Se her for oppdraget.]]
  
-{{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Alet%20indeks%20%3D%200%0D%0Asekvens%20%3D%20%22%22%0D%0Aindeks%20%3D%200%0D%0Agame.setScore(0)%0D%0Abasic.forever(function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.length%20%3D%3D%20indeks)%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(Math.randomRange(1%2C%202)%20%3D%3D%201)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22B%22%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%20sekvens.length%20-%201%0D%0A%20%20%20%20%20%20%20%20basic.showString(sekvens.charAt(indeks))%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0Ainput.onButtonPressed(Button.A%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22A%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%2B%3D%201%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20game.addScore(-1)%0D%0A%20%20%20%20%20%20%20%20basic.showIcon(IconNames.Skull)%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0A%60%60%60 100%,2000 noscroll noborder left}}+{{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Alet%20indeks%20%3D%200%0D%0Asekvens%20%3D%20%22%22%0D%0Aindeks%20%3D%200%0D%0Agame.setScore(0)%0D%0Abasic.forever(function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.length%20%3D%3D%20indeks)%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(Math.randomRange(1%2C%202)%20%3D%3D%201)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22B%22%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%20sekvens.length%20-%201%0D%0A%20%20%20%20%20%20%20%20basic.showString(sekvens.charAt(indeks))%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0Ainput.onButtonPressed(Button.A%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22A%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%2B%3D%201%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.showIcon(IconNames.Skull)%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0A%60%60%60 100%,2000 noscroll noborder left}}
  
 ====== Komplett løsning ====== ====== Komplett løsning ======
- +Under følger en komplett og fungerende versjon av spillet. Dersom du trykker på play-ikonet under kommandoene vil du kunne teste ut spillet i simuleringen. 
-{{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Alet%20indeks%20%3D%200%0D%0Asekvens%20%3D%20%22%22%0D%0Aindeks%20%3D%200%0D%0Agame.setScore(0)%0D%0Abasic.forever(function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.length%20%3D%3D%20indeks)%20%7B%0D%0A%20%20%20%20%20%20%20%20game.addScore(1)%0D%0A%20%20%20%20%20%20%20%20if%20(Math.randomRange(1%2C%202)%20%3D%3D%201)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22B%22%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%20sekvens.length%20-%201%0D%0A%20%20%20%20%20%20%20%20basic.showString(sekvens.charAt(indeks))%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0Ainput.onButtonPressed(Button.A%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22A%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%2B%3D%201%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20game.addScore(-1)%0D%0A%20%20%20%20%20%20%20%20basic.showIcon(IconNames.Skull)%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0Ainput.onButtonPressed(Button.B%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22B%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%2B%3D%201%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20game.addScore(-1)%0D%0A%20%20%20%20%20%20%20%20basic.showIcon(IconNames.Skull)%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0A%60%60%60 100%,3000 noscroll noborder left}}+{{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Alet%20indeks%20%3D%200%0D%0Asekvens%20%3D%20%22%22%0D%0Aindeks%20%3D%200%0D%0Agame.setScore(0)%0D%0Abasic.forever(function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.length%20%3D%3D%20indeks)%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(Math.randomRange(1%2C%202)%20%3D%3D%201)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sekvens%20%3D%20sekvens%20%2B%20%22B%22%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%20sekvens.length%20-%201%0D%0A%20%20%20%20%20%20%20%20basic.showString(sekvens.charAt(indeks))%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0Ainput.onButtonPressed(Button.A%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22A%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%2B%3D%201%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.showIcon(IconNames.Skull)%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0Ainput.onButtonPressed(Button.B%2C%20function%20()%20%7B%0D%0A%20%20%20%20if%20(sekvens.charAt(indeks)%20%3D%3D%20%22B%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%2B%3D%201%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20indeks%20%3D%200%0D%0A%20%20%20%20%20%20%20%20basic.showIcon(IconNames.Skull)%0D%0A%20%20%20%20%20%20%20%20basic.pause(1000)%0D%0A%20%20%20%20%20%20%20%20basic.clearScreen()%0D%0A%20%20%20%20%7D%0D%0A%7D)%0D%0A%60%60%60 100%,3000 noscroll noborder left}}
  
playground/playground.1586901668.txt.gz · Last modified: 2020/04/15 00:01 by royeven