Snake
Skrevet av: Geir Arne Hjelle og Martin Lie
Oversatt av: Stein Olav Romslo
Introduksjon
Sidan slutten av 1970-talet har nesten alle personlege datamaskiner hatt ein eller annan variant av Snake. Spelet vart ekstra populært då det dukka opp på Nokia sine mobiltelefonar i 997. Dei siste åra har spelet til og med blitt tatt med i New York Museum of Modern Art si samling.
Sjølve spelet går enkelt og greitt ut på å styre ein slange rundt på skjermen, og passe på at slangen ikkje krasjar i kanten av skjermen eller seg sjølv. Slangen veks når den et eple som dukkar opp tilfeldige stader på skjermen. Snake kan vidareutviklast på mange måtar, til dømes ved å lage ekstra hindringar på skjermen, ha ulike typer bonuseple, eller at to slanger konkurrerer om å ete epla og om å stenge kvarandre inne.

Oversikt over prosjektet
Du skal gjere mesteparten av kodinga av Snake sjølv. I Snake brukar me kloner på ein litt spesiell og ganske smart måte. Difor starar me med å jobbe med kloning.
Plan
Steg 1: Slangen flyttar på seg... eller?
I prinsippet er Snake eit enkelt spel å lage. Ei av dei største utfordringane er korleis slangen skal flyttast rundt. Fyrst virkar det kanskje som ein treng ei eller anna slags liste som hugsar kor kvar del av slangen er slik at ein kan flytte den.
I staden for å bruke lister skal me bruke kloning på ein spesiell måte. Hugs at når me kloner kopierer me både utsjånaden og oppførselen til ein figur. Me vil starte med ein enkel boks som skal vere ein del av kroppen til slangen. Denne boksen skal me flytte, klone, flytte, klone og så bortetter. Trikset for at det skal sjå ut som om slangen flyttar på seg er at dei gamle klonene slettar seg sjølv etter litt tid.
I figuren er den blå boksen hovudet til slangen, dei grøne boksane er kroppen til slangen, og dei kvite viser kor slangen har vore (dei kvite er eigentleg sletta kloner av boksane).

For å vite når me skal slette kloner treng me tre variablar: lengde
er lengda på slangen, teljar
er ein enkel teljar som passar på kor mange steg slangen har gått sidan spelet stara, og til slutt er min id
eit tal som fortel kor i rekkja ein gitt klone er. I figuren over er min id
skrive i kvar bokse, teljar
er 16 siden slangen har gått 16 steg, og lengde
er 6.
Trikset me skal bruke er ganske enkelt. Kvar klone slettar seg sjølv viss min id
er mindre enn teljar
- lengde
. La oss prøve det i praksis.
Sjekkliste
-
-
når eg får meldinga [Nytt spel v] set [teljar v] til [0] set [lengde v] til [5] gjenta til <rører [kant v]> set [min id v] til (teljar) endra [teljar v] med (1) vent (0.1) sekund lag klon av [meg v] gå (10) steg slutt
Pass på at du endrar
10
-talet igå 10 steg
-klossen til det same som storleiken på boksen du laga. -
når eg startar som klon vent til <((teljar) - (lengde)) > (min id)> slett denne klonen
Samanlikn skripta med figuren og forklaringa over. Forstår du korleis dei fungerer?
Steg 2: Styr slangen til den krasjar!
No skal me kontrollere slangen med piltastane.
Det er lett å bruke piltastane til å kontrollere slangen. Sidan den går av seg sjølv må me berre endre retninga når piltastane blir trykka på.
Sjekkliste
Steg 3: Eple og anna snadder
No skal me gi slangen mål og meining. Ved å ete eple kan slangen vekse seg stor og sterk!
Epla er ganske enkle å lage, sidan me berre treng ein figur som blir borte når slangen et dei. For å enklare kunne utvide med fleire eple og slikt seinare brukar me kloner av epla òg.
Sjekkliste
-
gå til x: ((10) * (tilfeldig tal frå (-23) til (23))) y: ((10) * (tilfeldig tal frå (-16) til (16)))
Hugs at skjermen har koordinatar frå
-240
til240
ix
-retning, og-180
til180
iy
-retning. Pass på at epla dine landar godt innanfor skjermen slik at slangen kan ete dei.
Steg 4: Vidareutvikling av spelet
Du står heilt fritt til korleis du vil jobbe vidare med spelet ditt. Her er nokre idear som kan gjere spelet endå meir morosamt.
Idear til vidareutvikling
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!