Soloball
Skrevet av: Geir Arne Hjelle
Oversatt av: Stein Olav Romslo
Introduksjon
No skal me lære korleis me lagar eit enkelt ballspel i Scratch. I Soloball skal du styre katten som kontrollerer ballen slik at ballen ikkje går i nettet.

Steg 1: Ein roterande katt
Me startar med å sjå på korleis me kan få kattefiguren til å rotere.
Sjekkliste
-
når @greenFlag vert trykt på gå til x: (0) y: (0) gjenta for alltid peik mot [musepeikar v] slutt
Dette er eit døme på eit lite program, eller skript, som det kallast i Scratch. Dette skriptet seier at kattefiguren skal stå midt på skjermen og alltid peike mot, eller sjå mot, musepeikaren.
Test prosjektet
Klikk på det grøne flagget.
Steg 2: Katten spring rundt
I staden for at katten roterer vil me at den skal kunne springe rundt i sirkel på skjermen.
Sjekkliste
No skal me gjere eit lite triks der me flyttar katten vekk frå sentrum slik at det ser ut som den spring i sirkel i staden for berre å rotere.
Test prosjektet
Klikk på det grøne flagget.
Kva skjedde?
Sjølv om me ikkje endra programmet vårt oppfører katten seg veldig annleis. Forstår du kvifor?
Når me seier at katten skal peike mot musepeikaren
må den rotere om eit punkt. Dette punktet kallast senterpunktet til figuren. Du kan sjå (og endre) senterpunktet til ein figur ved å klikke på øvst til høgre på skjermen.
Når me flyttar senterpunktet utanfor katten vil det sjå ut som om katten spring rundt dette punktet i staden for at den berre roterer utan å flytte seg.
Steg 3: Ein ball!
No skal me lage ein ball og få den til å sprette rundt på skjermen.
Sjekkliste
-
når @greenFlag vert trykt på gå til x: (0) y: (0) gjenta for alltid gå (3) steg viss <rører [Katt v] ?> peik i retning ((180) + (retning)) slutt slutt
Klossen
retning
finn du heilt nedst iRørsle
-kategorien. -
peik i retning ((180) + (retning))
gjer at ballen snur? Me skal sjå nærare på dette i steg 6.
Test prosjektet
Klikk på det grøne flagget.
Steg 4: Eit nett!
No skal me lage eit nett som kan fange ballen viss den flyr forbi katten.
Sjekkliste
-
-
når @greenFlag vert trykt på gå til x: (0) y: (0) gjenta (36) gongar snu @turnLeft (10) gradar lag avtrykk slutt
Klossen
lag avtrykk
stemplar ein figur på bakgrunnen slik at den blir der. Du kan fjerne slike avtrykk att ved å brukeslett
-klossen.
Test prosjektet
Klikk på det grøne flagget.
Steg 5: Nettet fangar ballen
Me vil at ballen skal stoppe når den treff nettet.
Sjekkliste
Til no har me ikkje laga noko kode som fortel ballen at den har treft nettet. Det skal me gjere no.
-
når @greenFlag vert trykt på gå til x: (0) y: (0) gjenta for alltid gå (3) steg viss <rører [Katt v] ?> peik i retning ((180) + (retning)) slutt viss <rører fargen [#ff0000] ?> stopp [alle v] :: control slutt slutt
Test prosjektet
Klikk på det grøne flagget.
Steg 6: Meir naturleg sprett
No sprett ballen berre framm og attende på same linje heile tida. Me vil at den skal sprette meir naturleg når den treff katten.
Sjekkliste
Ein bra modell for korleis ein ball sprett er at vinkelen ut er den same som vinkelen inn. Tenk på korleis ein ordentleg ball sprett viss du kastar den inn i ein vegg frå ein skrå vinkel.

I spelet er det to retningar me må tenke på: retninga til ballen og retninga kattefiguren står i.

I figuren over og i koden vidare tyder retning
retninga til ballen, sidan koden høyrer til ballfiguren. Til no har me brukt
peik i retning ((180) + (retning))
for at ballen skal snu. I figuren ser me at dette tyder at ballen sprett tilbake dit den kom frå.
Me bør òg kompensere for retninga til Katt
. Dette kan me gjere ved å trekke frå to gonger (retning
- retning av katt
). Forstår du korleis når du ser på figuren? Då blir den nye retninga
(((180) + (retning)) - ((2) * ((retning) - ([retning v] av [Katt v])))
Me kan forenkle dette til
(((180) - (retning)) + ((2) * ([retning v] av [Katt v])))
-
når @greenFlag vert trykt på gå til x: (0) y: (0) gjenta for alltid gå (3) steg viss <rører [Katt v] ?> peik i retning (((180) - (retning)) + ((2) * ([retning v] av [Katt v]))) slutt viss <rører fargen [#ff0000] ?> stopp [alle v] :: control slutt slutt
Test prosjektet
Klikk på det grøne flagget.
Lagre og legg ut prosjektet
No har me laga eit ganske morosamt spel! Viss du vil kan du gå vidare med dei neste stega for å gjere spelet endå meir spanande.
For å lagre spelet ditt kan du velje Lagre no
i Fil
-menyen. Då blir spelet lagra på brukarkontoen din hjå Scratch. Viss du ikkje har laga brukarkonto kan du velje Last ned til datamaskinen
i staden.
Viss du lagrar spelet på brukarkontoen din kan du òg velje å leggje det ut slik at andre kan spele det. For å gjere det klikkar du på Legg ut
øvst til høgre. Så kan du dele nettadressa til spelet ditt med venene og familien din.
Ekstra 1: Tell poeng
Alle spel blir meir morosame om ein får poeng!
Sjekkliste
For å telje poeng skal me bruke noko som kallast ein variabel. Ein variabel er eit namn på ein verdi som kan variere.
No vil me at Poeng
skal setjast til 0
når spelet startar. Så skal me få eitt poeng kvar gong me returnerer ballen.
-
når @greenFlag vert trykt på gå til x: (0) y: (0) set [Poeng v] til [0] gjenta for alltid gå (3) steg viss <rører [Katt v] ?> peik i retning (((180) - (retning)) + ((2) * ([retning v] av [Katt v]))) endra [Poeng v] med (1) slutt viss <rører fargen [#ff0000] ?> stopp [alle v] :: control slutt slutt
Ekstra 2: Auk hastigheita
No skal me gjere spelet vanskelegare etter kvart som tida går, ved at ballen beveger seg stadig raskare.
Sjekkliste
Hastigheita på ballen blir no styrt av klossen
gå (3) steg
Ved å endre på 3-talet endrar me hastigheita på ballen. Prøv å gjere det sjølv!
-
-
når @greenFlag vert trykt på gå til x: (0) y: (0) set [Poeng v] til [0] set [Hastigheit v] til [3] gjenta for alltid gå (Hastigheit) steg viss <rører [Katt v] ?> peik i retning (((180) - (retning)) + ((2) * ([retning v] av [Katt v]))) endra [Poeng v] med (1) endra [Hastigheit v] med (0.1) slutt viss <rører fargen [#ff0000] ?> stopp [alle v] :: control slutt slutt
Pass på at du endrar
gå steg
-klossen òg.
Ekstra 3: Unngå at katten fangar ballen
Du har sikkert opplevd at katten av og til "fangar" ballen. No skal me fikse dette.
Sjekkliste
Av og til virkar det som om katten "fangar" ballen. Det skjer fordi ballen ikkje flyttar seg langt nok etter at den har snudd. Den er framleis borti katten, og difor snur den att... Og igjen... Og igjen.
Me skal bruke Flytt
-variabelen til å telje kor mange flytt ballen har gjort sidan den var borti katten sist. Så kan me seie at ballen berre skal snu viss den har flytta mange gonger sidan sist den snudde.
-
når @greenFlag vert trykt på gå til x: (0) y: (0) set [Poeng v] til [0] set [Hastigheit v] til [3] gjenta for alltid gå (Hastigheit) steg endra [Flytt v] med (1) viss <<rører [Katt v] ?> og <(Flytt) > [20]>> peik i retning (((180) - (retning)) + ((2) * ([retning v] av [Katt v]))) endra [Poeng v] med (1) endra [Hastigheit v] med (0.1) set [Flytt v] til [0] slutt viss <rører fargen [#ff0000] ?> stopp [alle v] :: control slutt slutt
Prøv sjølv
I desse ekstrastega har me sett på nokre måtar me kan gjere spelet betre og meir spanande. Her er endå fleire idear:
Det er mange andre ting du kan prøve på. Du bestemmer!
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!