Det nærmer seg sommerferie, og her er et lite prosjekt som kan være kjekt mot slutten av skoleåret. Vi skal lage et lite spill, hvor vi skal manøvrere en kajakk nedover elven. Underveis må vi passe på at vi styrer unna alle steiner som kommer i veien. Spillet skal bli vanskeligere etter hvert som poengsummen stiger.
Eksempel på spillet finner dere her https://scratch.mit.edu/projects/859545036
Læringsmål:
- Lage et spill hvor vi styrer en kajakk nedover elven
- Lage et spill hvor vi bruker variabler, operatorer, løkker, vilkår og kloner
Steg 1 – Opprette bakgrunn
Vi oppretter et nytt prosjekt, og sletter katten som ligger inne som eneste figur. Siden vi ikke har en passende bakgrunn skal vi lage en egen bakgrunn som ser ut som en elv, med litt grønt gress på hver side. Vi tegner en egen bakgrunn ved å velge tegneverktøyet på bakgrunnen nede til høyre.


Steg 2 – Lage en kajakkpadler
Jeg fant ingen kajakkpadler blant figurene som finnes i Scratch, så jeg laget min egen. På samme måte som jeg laget bakgrunn, tegner jeg min egen kajakkpadler med tegneverktøyet for figurer.



Jeg laget to varianter av kajakkpadleren, der årene bytter plass. Dette gjorde jeg ved å kopiere den første drakten, og bytte posisjon på padleårene etterpå. Dermed kan jeg få det til å se ut som om han padler på ordentlig ved å bytte mellom de to draktene.
Om du synes dette er vanskelig, kan du laste ned draktene mine, og importere dem. Importer den ene som et objekt under figurer (til høyre i skjermen). Den andre importerer du som en drakt til denne figuren. kajakk1 kajakk2
Steg 3 -Få kajakken til å bevege seg
Vi må få kajakken til å bevege seg venstre og høyre. Dette gjør vi ved hjelp av piltastene. Høyre piltast mot høyre, altså endre x-verdien og venstre piltast mot venstre. Vi endrer x-verdien med 10 og -10. Dette er akkurat passelig fort.

Test nå om kajakken beveger seg slik du ønsker.
Steg 4 – Starte spillet
Hva skal skje når spillet starter? I mitt hode er det naturlig at kajakken begynner på et fast sted, og at vi setter poeng-telleren til null (vi må jo få poeng…).
Når det grønne flagget trykkes skal spillet startes. Da setter vi poeng til null, altså må vi opprette en variabel vi kaller poeng. Denne variabelen skal vises på skjermen.

Deretter vil jeg at kajakken skal plassere seg på en fast plass, midt i skjermen, nesten helt nede.

Disse verdiene kan det være du må tilpasse, alt etter hvor stor kajakken din er og hvordan bakgrunnen din ser ut.
Siden jeg har to ulike drakter til kajakken vil jeg at det skal se ut som om kajakken beveger seg.

I en løkke, må jeg bytte mellom de to draktene, og jeg må legge inn en liten pause mellom slik at vi rekker å se byttet.

Start spillet ved å trykke på flagget og se hvordan kajakken oppfører seg. Bytter den mellom draktene slik at den «padler», går den til venstre og høyre?
Steg 5 – Unngå at vi kjører på land
Vi kan ikke ha det slik at kajakken kan gå på land, så vi må lage en test som kontroller om kajakken berører land. Denne må starte når spillet starter, og kjøres hele tiden. Vi trenger en gjenta for-alltid løkke som kjører til programmet stopper.

Inne i denne løkken må vi lage et vilkår, en test på om kajakken berører land. Vi kunne brukt denne:

Men, da vil programmet reagere om årene tar borti land. Og det er ikke så farlig. Det er kajakken vi ikke ønsker skal på land. Derfor må vi teste på om fargen i kajakken berører land. Da kan vi spille av en lyd, og la kajakken gli sakte tilbake til midten av elven.

Her er mitt forslag, og jeg kan nesten garantere at du må forandre både farge og hvor den ender opp. For å sette fargen, trykk på fargen og bruk pipetten til fange opp rett farge.
Når du har satt sammen koden, test ut hva som skjer om du havner på land.
Steg 6 – Skjær i sjøen
På tide å lage noen skjær i sjøen, slik at vi kan lage et spill. Vi legger til noen steiner fra galleriet, slik at vi har to objekter i spillet vårt. Det godt være at steinene er veldig store, så det kan være nødvendig å endre størrelsen på dem.

Tanken bak spillet et at kajakken skal padle nedover elven og komme seg unna de steinene som dukker opp. I programmet må faktisk tenke litt annerledes. Kajakken holder seg på en plass, mens steinene kommer mot den.
Når spillet starter, skal vi skjule steinen. Deretter skal vi lage en løkke som gjentas for alltid (eller så lenge spillet kjører). Vi skal vente et antall sekunder, før vi lager en kloning av steinen som skal komme mot kajakken.

Hvor mange sekunder du velger å vente bestemmer du helt selv. Standardblokken venter 1 sekund, men du kan velge å vente et fast antall sekunder, eller legge inn muligheten for at det er tilfeldig hvor lenge en skal vente før det kommer en ny stein.

Denne blokken kan gjøre spillet mye artigere.
Steg 7 – La steinene komme!
Når steinene starter som klon, skal de begynne et tilfeldig sted på toppen av skjermen/elven og komme mot kajakken. Når du setter opp disse verdiene, må du teste godt ut slik at du er sikker på at steinene dukker opp i elven og ikke på land.

Du kan selvsagt ikke se hvor de er før du viser steinene, så legg inn en vis blokk etter at den er plassert.

Steinene skal så komme steg for steg nærmere kajakken, helt til de kommer forbi kajakken.
Vi trenger en løkke som gjennomfører en endring i y-aksen til den passerer et gitt sted. Når y-posisjonen er -150 er det greit å forsvinne.

Vi velger å endre med -10 for hvert steg, og legger inn en pause på 0.2 sekunder for hver gang.

La oss nå teste om steinene kommer mot oss.
Steg 8 – Om vi kolliderer med kajakken
Vi må selvsagt lage en test som kontrollerer på om kajakken kollidere med steinen. Denne legger vi inne i løkken som styrer steinene som kommer mot kajakken.
Hvis kajakken kolliderer med en stein, skal det spilles av en lyd, og hele spillet skal stoppe. Her kunne vi også kontrollert på om steinen treffer objektet kajakken, men siden det ikke er krise om en padleåre er borti en stein, så kontrollerer vi på fargen i kajakken.

Finn en passende lyd og legg inn før spillet stopper. Test deretter ut hva som skjer om kajakk og stein kolliderer. Spilles det av en lyd? Stopper spillet?
Steg 9 – Få poeng og steinene forsvinne
Om du har prøvd spillet nå, så oppdager du raskt at det samles en masse steiner i bunnen av skjermen. Slik kan vi ikke ha det. Vi må legge inn litt kode som fjerner denne kloden. Samtidig må vi gi spilleren et poeng for å komme trygt forbi steinen.

Test nå om du får poeng hver gang du klarer å komme forbi en stein.
Nå er spillet i utgangspunktet ferdig, men la oss se om vi ikke kan legge inn litt flere funksjoner.
Steg 10 – La spillet bli vanskeligere etter hvert
Gode spill blir vanskeligere etter hvert som en spiller. La oss derfor endre programmet litt, slik at steinene kommer raskere og raskere etter hvert tiende poeng.
Vi lager en ny variabel som vi kaller «level». Denne setter vi til 1 når programmet starter, og vi plasserer den sammen med den andre variabelen, poeng (på kajakken). Denne variabelen trenger ikke vises.

Vi bytter så til steinen, for resten av koden skal plasseres her. Under når flagget klikkes på steinene har vi en gjenta for alltid løkke. I denne må vi kontrollere om vi har fått nok poeng til å endre «level». Om vi har fått mer enn 10 poeng, skal «level» endres med en og steinene skal komme raskere. Dette skal skje igjen på 20, 30 osv.
Dette kan vi gjøre enkelt på denne måten: Hvis har mer poeng enn level * 10, så endrer vi level med 1. Dermed endrer vi level på 11, 21, 31 osv.

Under koden som styrer hvor fort steinene skal komme, endrer vi verdien som styrer endringen i y-verdi til å multipliseres med verdien i variabelen «level». Da vil den endres for hver gang «level» endres, altså etter 11, 21 osv poeng.

På tide å teste om dette fungerer.
Utfordringer
Her er noen utfordringer som du kan prøve deg på når spillet er ferdig, og som kan være med på å gjøre spillet enda gøyere.
- Lag en fancy framside som vises før spillet starter
- Lag en avslutningsside som vises når spillet er ferdig
- Utvid spillet slik at spilleren har 3 liv
- Utvid spillet slik at spilleren kan få flere poeng om den fanger fisk eller noe annet med kajakken