User Tools

Site Tools


snake

Snake

I dette spillet skal du lage såkalte sprites (det er det engelske navnet på figurer eller brikker i et spill). En sprite (snake) skal forsøke å fange en annen sprite (mat) og når maten blir spist skal det dukke opp ny mat et annet sted.

Spillet skal bygges opp trinn for trinn, og når du er ferdig med ett trinn bør du teste at løsningen din fungerer (bruk simulatoren øverst i venstre hjørne på programmeringssiden aktivt). Hvis du står fast kan du klikke på tips-knappene for å få opp tips, og under tipsene finner du løsningsforslag. Hvis du programmerer med javaskript finner du løsningsforslag ved å klikke på HTML-knappen. Du finner løsningsforslag med blokker ved å klikke på Result-knappen og vente litt mens løsningsforslaget blir generert.

Lage brikkene

Alle elementene i et spill må lagres et sted, og en lagringsplass kalles en variabel. I en variabel kan du lagre nesten hva som helst, både tall, tekster og spillbrikker, og det som ligger lagret i variabelen kalles en verdi.

Lage Snake

Trykk på menyen for Variabler og velg “Lag en variabel”. Kall variabelen snake. Nå skal det ha blitt opprettet en kommando kalt “sett snake til” i variabel-menyen. Denne skal utføres ved start, så du må klikke på den og dra den inn til “Ved start”-blokka. Det er ikke tilstrekkelig å lagre et tall i denne variabelen, du trenger å lage en ny spillbrikke og plassere denne spill-brikken et sted på skjermen.

Tips 1

Tips 1

Du finner kommandoer for variabler i menyen for Variabler. Du oppretter brikker ved å klikke på Avansert og deretter gå inn i Spill-menyen.

Tips 2

Tips 2

Når du lager nye brikker må brikken plasseres et sted på spillbrettet, og vi bruker koordinater til å betegne én spesifikk rute. Referansen (eller nullpunktet, origo, om du vil) er øverste venstre hjørne. X-koordinaten betegner antall ruter bortover fra origo, og Y-koordinaten betegner hvor mange hakk nedover fra origo. Hvis du plasserer brikken på koordinat (X=0,Y=1) blir den plassert 0 hakk bortover og ett hakk under origo, altså like under origo. Øverste høyre hjørne har koordinat (X=4,Y=0), nedre høyre hjørne har koordinat (X=4,Y=4) og nedre venstre hjørne har koordinat (X=0,Y=4).

Tips 3

Tips 3

Du kan gjerne plassere snake i koordinat (X=2,Y=2, altså midt på brettet) til å begynne med.

Lage mat

Lag en ny variabel som du kaller mat. Her skal du også opprette en brikke (i Spill-menyen) og denne kan du plassere hvor som helst.

Brikken mat skal ikke bevege seg, men det skal slangen. Så du bør også gå inn i Spill-menyen og finne “angi”-kommandoen. Du skal angi snake sin retning til 0 ved start.

Tips 1

Tips 1

Du kan med fordel bruke “tilfeldig tall fra 0 til 4”-kommandoen fra Matematikk-menyen til å plassere maten et tilfeldig sted.

Starte spillet

I spillet skal du få poeng hver gang snake finner mat, og du mister ett liv dersom det går for lang tid før snake får ny mat. Ved start må du sette poengsummen din til 0 poeng og gi deg selv f.eks. 10 liv. Du finner kommandoer for dette i Spill-menyen.

Vanskegrad

Slangen blir lettere å styre dersom den går sakte, da får du bedre tid til å tenke. Du skal derfor lage en variabel som styrer hvor fort slangen skal bevege seg. Denne variabelen skal du kalle pause og lagre verdien 2000 i variabelen. Senere i spillet kan du ta mindre pause hvis du vil ha spillet litt vanskeligere.

Styre slangen

Du trenger å lage funksjoner til å styre slangen. Ved å trykke på menyen for Inndata finner du en funksjon som heter “når knapp A trykkes”. Denne skal du bruke til å få slangen til å kjøre mot venstre.

Tips 1

Tips 1

Ved å gå inn på Spill-menyen kan du bruke “angi”-kommandoen til å angi en brikkes retning til et tall (i grader).

Tips 2

Tips 2

Retning 0 betyr oppover, retning 90 betyr mot høyre, retning 180 betyr nedover, og retning 270 betyr til venstre.

Tips 3

Tips 3

Dette betyr at når knapp A trykkes skal snake sin retning angis til 270 grader.

Styre slangen i alle retninger

Nå skal du bruke de andre knappene til å styre slangen i andre retninger:

  • Knapp A: slangen skal styres mot venstre
  • Knapp B: slangen skal styres mot høyre
  • Knapp A+B (begge samtidig): slangen skal styres nedover
  • når ristes: slangen skal gå oppover

Flytte slangen

Nå skal du bruke en løkke av typen “gjenta for alltid” til å flytte slangen hele tiden. Dersom du ikke allerede har en løkke for å “gjenta for alltid” kan du finne en i Basis-menyen. Det som skal gjentas for alltid er følgende “oppskrift”:

  1. Flytt slangen ett hakk framover
  2. Hvis slangen er ved kanten av skjermen skal den skifte retning
  3. Ta pause i like mange millisekunder som det er angitt i variabelen pause

Tips 1

Tips 1

I Spill-menyen finner du kommandoer for å flytte snake med 1 hakk. Du finner også en kommando for å få snake til å sprette om den er ved kanten av skjermen.

Tips 2

Tips 2

Du finner kommandoen for “pause” i Basis-menyen. Der kan du enten skrive et fast antall millisekunder du vil ta pause, eller du kan trykke på menyen Variabler og trekke variabelen pause inn i pausens varighet.

La snake spise mat

Etter at slangen er flyttet, men før spillet tar pause, må du sjekke om slangen er på samme sted som maten. Til det trenger du en “hvis”-blokk fra Logikk-menyen. Der er det et sekskantet hull som du må fylle med noe riktig. Se i Spill-menyen om du finner en hensiktsmessig betingelse?

Tips 1

Tips 1

Det du ønsker å sjekke er om snake er på samme plass som mat, altså om de berører hverandre.

Tips 2

Tips 2

Hvis snake berører mat skal du endre poengsummen din med 1.

Spise maten

Hvis snake berører mat skal du gjøre følgende:

  1. endre poengsummen din med 1
  2. legge til ett liv
  3. Flytte mat til et tilfeldig sted på skjermen

Tips 1

Tips 1

Du kan flytte maten ved å angi X-koordinaten til mat til et tilfeldig tall mellom 0 og 4. Gjør det samme for Y-koordinaten

Fjerne liv

For å gjøre spillet mer spennende enn en evig jakt på mat må du lage en måte det er mulig å miste liv på også. I denne versjonen av spillet skal vi innføre en regel om at slangen mister ett liv hvert 10. sekund. I trinnet over la du inn en kommando som gir slangen ett ekstra liv for hver gang du fanger mat. Dette betyr at du må spise mat minimum hvert 10. sekund for å opprettholde dine opprinnelige 10 liv.

Tips 1

Tips 1

Du trenger en ny “gjenta for alltid”-løkke fra Basis-menyen. Det som skal gjentas er

  • mist ett liv
  • ta pause i 10 sekunder

Tips 2

Tips 2

Du finner kommandoer for å fjerne liv i Spill-menyen og og pause fra Basis-menyen.

Innføre nivåer

Nå skal du gjøre spillet gradvis vanskeligere. For hvert 10. sekund skal pausen mellom hvert slangetrykk minke med 100ms, altså at slangen vil gå fortere og fortere etter hvert.

Tips 1

Tips 1

Dette kan oppnås ved at du endrer pause-variabelen med -100 hver gang du mister ett liv.

Videre arbeid

  • Du vil fort merke at slangen er vanskelig å styre fordi det kun finnes to knapper (A og B) for høyre og venstre, men det mangler knapper for opp og ned. Derfor må man av og til riste, og av og til trykke på begge knappene. Greier du å finne en bedre måte å styre slangen på?
  • For hvert 10. sekund blir pausen redusert med 100 millisekunder. Etter hvert vil pausen bli veldig kort og slangen bevege seg veldig fort. Når pausen blir 0 vil spillet gå ubehagelig raskt, og når pausen blir negativ vil spillet stoppe helt opp. Hvordan kan det problemet fikses?
snake.txt · Last modified: 2020/04/02 12:14 by royeven