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/14 23:22]
royeven [Oppdrag 3]
playground:playground [2020/04/15 09:51] (current)
royeven
Line 1: Line 1:
 ====== Husk sekvensen ====== ====== Husk sekvensen ======
-I denne oppskriften skal du trinn for trinn lage et spill hvor micro:biten velger en tilfeldig bokstav (A eller B) og viser denne på skjermen. Deretter skal du huske denne bokstaven og trykke på den aktuelle knappen. Dersom micro:biten velger bokstav A skal du altså trykke på knapp A. Deretter skal micro:biten velge en ny bokstav (f.eks. B) og du skal da trykke på A først, deretter på B. Dersom du har greid å huske hele sekvensen så langt (Altså A fulgt av B) skal micro:biten velge en ny tilfeldig bokstav, f.eks. enda en B. Da skal du trykke A-B-B på tastene før micro:biten velger neste bokstav i rekkefølgen. Utfordringen for deg blir å huske hele sekvensen etter hvert som den blir lengre og lengre.+I denne oppskriften skal du trinn for trinn lage et spill hvor micro:biten velger en tilfeldig bokstav (A eller B) og viser denne på skjermen. Deretter skal du huske denne bokstaven og trykke på den tilsvarende knappen. Dersom micro:biten velger bokstav A skal du altså trykke på knapp A. Deretter skal micro:biten velge en ny bokstav (f.eks. B) og du skal da trykke på A først, deretter på B. Dersom du har greid å huske hele sekvensen så langt (Altså A fulgt av B) skal micro:biten velge en ny tilfeldig bokstav, f.eks. enda en B. Da skal du trykke A-B-B på tastene før micro:biten velger neste bokstav i rekkefølgen. Utfordringen for deg blir å huske hele sekvensen etter hvert som den blir lengre og lengre.
  
 ===== Om datatypen tekst ===== ===== Om datatypen tekst =====
-En datamaskin kan behandle data av forskjellige typer: tekst, tall og tabeller er tre forskjellige datatyper som oppfører seg forskjellig.  I denne oppskriften skal du bruke datatypen tekst, og derfor er det viktig at du forstår hvilke egenskaper tekster har. I mange programmeringsspråk kalles denne datatypen også for "string" (på engelsk) eller "streng" (på norsk).+En datamaskin kan behandle data av forskjellige typer: tekst, tall og tabeller er tre forskjellige datatyper som oppfører seg forskjellig.  I denne oppskriften skal du bruke datatypen tekst, og av en eller annen grunn har makecode valgt å legge menyen for **Tekst** under **Avansert**. Dette må ikke forståes slik at alt som har med tekst å gjøre er vanskelig, for det er det ikke. Men for å bruke alle de fantastiske mulighetene man har med tekster er det viktig at man forstår hvilke egenskaper denne datatypen har. De viktigste egenskapene er vist i de følgende eksemplene.
  
-Vi bruker variabler for å lagre tekster, på samme måte som vi lagrer tall, og den største forskjellen på tekst og tall er at tekst har en variabel lengde. En tom tekst (altså tekst som ikke inneholder noen tegn, selv ikke mellomrom) vil ha en lengde på 0. Her har jeg kalt teksten for //sekvens// ettersom spillet krever at vi starter med en tom tekst som vi hele tiden legger til nye tegn i, og din jobb er å huske denne sekvensen etter hvert som spillet skrider fram.+I mange programmeringsspråk kalles denne datatypen også for "string" (på engelsk) eller "streng" (på norsk). Vi bruker variabler for å lagre tekster, på samme måte som vi lagrer tall, og den største forskjellen på tekst og tall er at tekst har en variabel lengde. En tom tekst (altså tekst som ikke inneholder noen tegn, selv ikke mellomrom) vil ha en lengde på 0. Her har jeg kalt teksten for //sekvens// ettersom spillet krever at vi starter med en tom tekst som vi hele tiden legger til nye tegn i, og din jobb er å huske denne sekvensen etter hvert som spillet skrider fram.
  
-Dersom du trykker på play-ikonet under eksemplet vil du se at micro:biten printer lengden på den tomme teksten på skjermen, og resultatet bør bli 0. Etter lengden av teksten vil micro:biten printe selve teksten, d.v.s. ingenting ettersom teksten ikke inneholder noen tegn:+Dersom du trykker på play-ikonet under eksemplet vil du se at micro:biten viser lengden på den tomme teksten på skjermen, og resultatet bør bli 0. Etter lengden av teksten vil micro:biten vise selve teksten, d.v.s. ingenting ettersom teksten ikke inneholder noen tegn:
 {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Asekvens%20%3D%20%22%22%0D%0Abasic.showNumber(sekvens.length)%0D%0Abasic.showString(sekvens)%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%22%22%0D%0Abasic.showNumber(sekvens.length)%0D%0Abasic.showString(sekvens)%0D%0A%60%60%60 100%,800 noscroll noborder left}}
  
Line 23: Line 23:
 {{url>https://makecode.microbit.org/---docs?md=%60%60%60blocks%0D%0Alet%20sekvens%20%3D%20%22%22%0D%0Asekvens%20%3D%20%22AB%22%0D%0Asekvens%20%3D%20sekvens%20%2B%20%22C%22%0D%0Asekvens%20%3D%20sekvens%20%2B%20%22D%22%0D%0Abasic.showNumber(sekvens.length)%0D%0Abasic.showString(sekvens)%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%22AB%22%0D%0Asekvens%20%3D%20sekvens%20%2B%20%22C%22%0D%0Asekvens%20%3D%20sekvens%20%2B%20%22D%22%0D%0Abasic.showNumber(sekvens.length)%0D%0Abasic.showString(sekvens)%0D%0A%60%60%60 100%,800 noscroll noborder left}}
  
-Vi kan hente ut det tegnet som står på en bestemt posisjon i //sekvens//. Det første tegnet står på posisjon 0, det andre tegnet står på posisjon 1, osv. Akkurat denne måten å nummerere på (altså at man starter på 0 og ikke 1, som vi mennesker ofte gjør) kalles null-indeksering og vil av og til forvirre uvante programmerere, men dette er en vanesak. I eksemplet under har vi teksten 'ABCD' og printer bare tegnet på posisjon 0, og resultatet bør bli en A. Sjekk det selv ved å trykke på play-ikonet:+Vi kan hente ut det tegnet som står på en bestemt posisjon i //sekvens//. Det første tegnet står på posisjon 0, det andre tegnet står på posisjon 1, osv. Akkurat denne måten å nummerere på (altså at man starter på 0 og ikke 1, som vi mennesker ofte gjør) kalles null-indeksering og vil av og til forvirre uvante programmerere, men dette er en vanesak. I eksemplet under har vi teksten 'ABCD' og viser bare tegnet på posisjon 0, og resultatet bør bli en A. Sjekk det selv ved å trykke på play-ikonet:
 {{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%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%0A%60%60%60 100%,800 noscroll noborder left}}
  
-I programmet under blir //sekvens// satt til 'ABCD', og deretter printes hvert enkelt tegn i rekkefølge på skjermen. Merk at D'en blir stående ettersom det ikke er noen kommando for å tømme skjermen etter den siste printingen:+I programmet under blir //sekvens// satt til 'ABCD', og deretter vises hvert enkelt tegn i rekkefølge på skjermen. Merk at D'en blir stående ettersom det ikke er noen kommando for å tømme skjermen etter den siste visningen:
 {{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%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%0A%60%60%60 100%,800 noscroll noborder left}}
  
  
-I dette eksemplet har vi samme //sekvens// som i stad, altså 'ABCD'. Merk at programmet nå vil printe tegnene i posisjon 0-3 (altså A, B, C, og D). Deretter vil programmet printe tegnet på posisjon 4. Dette tegnet finnes ikke, og et tomrom vil nå bli printet til slutt. Derfor vil skjermen tømme seg. Ettersom den siste linjen i programmet forsøker å printe et tegn som ikke finnes, finnes det en risiko for at programmet krasjer dersom man gjør slik som i eksemplet under. Man skal __aldri__ forsøke å gjøre noe som helst med verdier som ikke eksister, og skal derfor så langt det er mulig forsøke å unngå situasjoner som den under:+I dette eksemplet har vi samme //sekvens// som i stad, altså 'ABCD'. Merk at programmet nå vil vise tegnene i posisjon 0-3 (altså A, B, C, og D). Deretter vil programmet vise tegnet på posisjon 4. Dette tegnet finnes ikke, og et tomrom vil nå bli vist til slutt. Derfor vil skjermen tømme seg. Ettersom den siste linjen i programmet forsøker å vise et tegn som ikke finnes, finnes det en risiko for at programmet krasjer dersom man gjør slik som i eksemplet under. Man skal __aldri__ forsøke å gjøre noe som helst med verdier som ikke eksister, og skal derfor så langt det er mulig forsøke å unngå situasjoner som den under:
 {{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 42: Line 42:
 Ved start skal du lage en variabel som kalles //sekvens//. Den skal inneholde en tom tekst. Du skal lage en annen variabel som du kaller //indeks//. Denne skal settes til lengden av //sekvens//. Du skal også sette poengsummen din til 0 poeng. Ved start skal du lage en variabel som kalles //sekvens//. Den skal inneholde en tom tekst. Du skal lage en annen variabel som du kaller //indeks//. Denne skal settes til lengden av //sekvens//. Du skal også sette poengsummen din til 0 poeng.
 <hidden Tips 1>Du trenger kommandoer fra menyene for **Tekst**, **Variabler** og **Spill**.</hidden> <hidden Tips 1>Du trenger kommandoer fra menyene for **Tekst**, **Variabler** og **Spill**.</hidden>
 +
 [[#losningsforslag_1|Se her for løsningsforslag.]] [[#losningsforslag_1|Se her for løsningsforslag.]]
  
Line 66: 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>
 <hidden Tips 3>Dersom du ikke husket riktig kan du sette //indeks// til 0. Dermed får du en sjanse til å taste inn hele sekvensen fra begynnelsen igjen. Det kan være en god idé å vise ett eller annet slags ikon på skjermen når man husker feil slik at man kan se helt tydelig at man må starte forfra igjen.</hidden> <hidden Tips 3>Dersom du ikke husket riktig kan du sette //indeks// til 0. Dermed får du en sjanse til å taste inn hele sekvensen fra begynnelsen igjen. Det kan være en god idé å vise ett eller annet slags ikon på skjermen når man husker feil slik at man kan se helt tydelig at man må starte forfra igjen.</hidden>
 +<hidden Tips 4>Kommandoene for å håndtere "når knapp A trykkes" skal være nesten identiske som kommandoene for å håndtere "når knapp B trykkes".</hidden>
 +
 [[#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 78: Line 86:
 ===== Løsningsforslag 1 ===== ===== Løsningsforslag 1 =====
 [[#oppdrag_1|Se her for oppdraget.]] [[#oppdrag_1|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%0Agame.setScore(0)%0D%0A%60%60%60%0D%0A%0D%0A 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%0Agame.setScore(0)%0D%0A%60%60%60%0D%0A%0D%0A 100%,400 noscroll noborder left}}
  
 ===== Løsningsforslag 2 ===== ===== Løsningsforslag 2 =====
 [[#oppdrag_2|Se her for oppdraget.]] [[#oppdrag_2|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%0A%60%60%60 100%,600 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%0A%60%60%60 100%,600 noscroll noborder left}}
  
Line 91: 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%20%20%20%20game.addScore(1)%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 ====== 
 +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%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.1586899356.txt.gz · Last modified: 2020/04/14 23:22 by royeven