Del 2 – Bläckfiskspelet

Gör en egen sprite

Vi vill göra en skylt som det står ”GAME OVER” på. Eftersom den här skylten ska dyka upp först när en haj tagit bläckfisken kan vi göra skylten som en separat sprite som vi gömmer när spelet börjar och sedan visar när spelet är slut. För att rita en helt egen sprite kan vi använda Scratch inbyggda ritprogram, klicka på den lilla penseln över sprite-listan för att skapa en ny, tom sprite:
Screen Shot 2016-06-16 at 11.20.38
Vi får en ny, tom sprite som heter ”Sprite1” eller liknande, och vi kommer direkt in i det inbyggda ritprogrammet. Nu kan vi skapa en enkel skylt genom att använda verktyget för rektanglar och textverktyg­et. Rita ett par rektanglar och använd fyllningshinken för att fylla dem så att du får en vit skylt. Klicka sen på textverktyget och skriv in ”GAME OVER” på skylten.
Screen Shot 2016-06-16 at 11.21.32
Den här skylten ska vi bara visa när spelet är slut, men medan vi ritar den så visas den direkt på scenen. Nu ska vi programmera den. Klicka därför på fliken ”Script” för denna sprite och dra in ett ”när grön flagga klickas på” och ett ”göm”. Nu kommer ju skylten att försvinna så fort vi startar spelet, vilket är precis vad vi vill. Men för att vi ska kunna programmera in att skylten ska visas så fort hajen tagit bläckfisken behöver vi ju kunna få information från vårt andra program. Det gör vi i Scratch med hjälp av något som kallas ­”meddelanden”.

Meddelanden – låt programmen prata med varandra

Hittills har vi skapat ett antal olika program som ”bott” i en sprite ­eller scenen. De har skött sig själva, och inte haft något med varandra att göra mer än att känna av om en sprite rör vid en annan. Men om vi nu vill att något ska hända med en sprite när något annat ­händer i vårt spel behöver vi använda meddelanden, som är ett sätt att låta olika program prata med varandra, oavsett var de bor.
Ett meddelande är helt enkelt ett litet tillrop mellan två program. Vi kan skicka ett meddelande och vi kan lyssna på ett meddelande. Alla meddelanden skickas genom hela Scratch, så om du till exempel skickar ett meddelande från bläckfisken så behöver du inte berätta vem du skickar meddelandet till – det räcker att börja lyssna där du vill plocka upp det. Du kan skapa många olika meddelanden och använda dem till olika saker.
Nu ska vi skapa ett meddelande som skickas från hajens script när den lyckats fånga bläckfisken, och som tas emot av skyltens script. Klicka på hajen i sprite-listan för att gå tillbaka till hajens program. Här finns vårt script som vi gjorde för att känna av om hajen rör vid bläckfisken. Gå nu till kategorin ”kontroll” och hitta blocket ”skicka [message1]”, näst längst ner. Dra in det och släpp det i villkoret.
Scratch har redan skapat ett meddelande åt oss, men vi tar och gör ett eget. Klicka på den lilla svarta pilen i blocket du just drog in och välj ”nytt meddelande”. I rutan som poppar upp kan du skriva vad du vill kalla ditt nya meddelande. Vi kallar det ”game over” den här gången så skriv det i rutan. När du sparat meddelandet ser du att blocket nu valt ditt nya meddelande i stället, så det står ”skicka [game over]”. När hajen fångar bläckfisken kommer nu ­meddelandet ”game over” att skickas över hela Scratch, och alla andra script kan ”lyssna” på det.
Efter att vi skickat meddelandet ska vi också radera klonen, så gå till ”kontroll” och dra in ”radera klonen”.
Screen Shot 2016-06-16 at 11.22.47
Nu ska vi se till att vår sprite med skylten lyssnar på meddelandet och visar sig när det tas emot. Klicka på skylten i sprite-listan så att du ser skyltens program igen. Under kategorin ”Händelser” finns startblocket ”När jag tar emot [game over]”. Det senaste med­delandet som skapats är förvalt, men om det står något annat där kan du klicka på den lilla svarta pilen och välja ditt meddelande. Dra in blocket och börja på ett nytt script. Det vi ska göra när vi tar emot meddelandet är att visa skylten och sen avsluta spelet, så gå till ­”utseende” och dra in ett ”visa”.
Screen Shot 2016-06-16 at 11.23.33

Ladda in ljud

Nu skulle vi vilja spela ett riktigt läskigt ljud om vi blir uppätna, för då är spelet slut. Klicka på fliken ”ljud” som ligger ovanför scriptlistan så ser du att vi bara har ett ljud till hajen just nu, nämligen ”pop” som vi använde när bläckfisken fångar en stjärna. Vi laddar in ett nytt ljud från de som kommer inbyggda i Scratch genom att klicka på den lilla ikonen som ser ut som en högtalare.
Screen Shot 2016-06-16 at 11.24.17
Även här kan man bläddra mellan ljuden genom att klicka på kategorierna till vänster. Under kategorin ”Elektronisk” ligger ett ljud som passar bra, det heter ”screech”. Dubbelklicka på det för att ladda in det. Klicka sen på ”Script”-fliken så att du ser skyltens program igen.
Det finns ett par olika block som har med ljud att göra under ­kategorin ”Ljud”. Det vi använt förut heter ”spela ljudet” men det finns ett block under det som heter ”spela ljudet tills färdigt”, och det ska vi använda denna gång. Dra in det och släpp det under ”visa”. Där ska ljudet ”screech” redan vara valt, men dubbelkolla för säkerhets skull.
Nu kommer det läskiga ljudet att spelas när spelet tar slut.

Stoppa spelet

För att spelet verkligen ska ta slut behöver vi också se till att stoppa allt efter att det blivit game over. Gå till ”kontroll”. Leta upp blocket ”stoppa [alla]” och dra in det efter ljudblocket.
”Stoppa alla” gör just det – samma sak som om du hade tryckt på stoppknappen högst upp. När spelet är slut måste man starta om det genom att trycka på den gröna flaggan igen.
Screen Shot 2016-06-16 at 11.25.49

Initscript – när spelet börjar

Nu börjar spelet ta form, men vid det här laget har du kanske upptäckt att vi inte nollställer poängen varje gång spelet startas. Det här pratade vi om även i förra kursen, men vi behöver ett ”initscript”, något som nollställer det som behövs varje gång spelet startas. Det här scriptet kan vi lägga i scenens script, så klicka på scenens ikon bredvid sprite-listan igen.
Dra in ett nytt startblock, ”när grön flagga klickas på”, och gå sen till ”data” och dra in ett ”sätt [poäng] till [0]”. Nu har vi sett till att poängen nollställs i början av varje spelomgång.
Screen Shot 2016-06-16 at 11.26.45

Ännu en klon – krabban

Hajen är farlig, men vi tänkte att vi skulle lägga in en krabba också som kommer upp från botten av havet då och då och försöker knipsa vår bläckfisk. Nästan all programmering för krabban kommer att vara likadan som den för hajen.
Först laddar vi in en ny sprite, krabban heter ”Crab” och ligger under ”djur”. Gå till krabbans script och dra in ett ”när grön flagga klickas på” och lägg till ett ”göm”, så att krabban inte syns när spelet börjar.
Nu ska vi göra scriptet som hanterar en klon av krabban. Titta på bilden så ser du hur vi programmerat och kan göra likadant. Nedanför bilden förklarar vi skillnaderna mot hajens script.
Screen Shot 2016-06-16 at 11.27.46
Som du ser har vi två script som körs när krabban startas som klon. Det lilla scriptet animerar bara krabban – den kommer med två klädslar, precis som bläckfisken, och om vi växlar mellan dem så ser det ut som om krabban knipsar med klorna.
Det andra, längre scriptet börjar med att sätta y-värdet så att krabban ligger längst ner på skärmen, och sätta y-värdet med hjälp av slumpen så att krabban dyker upp på olika ställen längs botten. ­Sedan pekas krabban rakt uppåt (noll graders riktning) men för att den inte ska snurra runt så sätter vi rotationsstilen till ”rotera inte” – då visas spriten rakt upp, oavsett rotation. Sen visar vi krabban.
I loopen flyttar sig krabban långsamt, nämligen 0.3 steg i taget rakt upp (för vi satte ju riktningen till uppåt tidigare), och sedan kommer tre villkor efter varandra. Det första kollar om krabban hunnit simma upp en bit, nämligen till ett y-läge som är mer än -160. Då vänder vi helt om på krabban så att den pekar neråt, och därför börja simma tillbaka mot botten i stället.
Nästa villkor kollar om krabban hunnit simma tillbaka ner till botten av skärmen och raderar klonen när den är färdig. Det sista villkoret känner av om krabban rör vid bläckfisken, skickar ”game over”-meddelandet, som är detsamma som hajen skickar, och ­raderar klonen.
Vi valde att låta krabban röra sig väldigt långsamt eftersom det blir svårt för bläckfisken att hinna undan annars. Om du ändå tycker att det är för svårt när du testspelar kan du flytta upp bläckfisken på scenen lite, men tänk på att du kanske behöver flytta upp stjärnorna också då.
Glöm inte att du behöver ett script i scenen för att sätta igång krabbans kloner också. Vi satte tiden som slumpas till mellan 15 och 25 sekunder, annars kommer det för många krabbor, men testa ­gärna med olika värden!
Screen Shot 2016-06-16 at 11.28.42

Bakgrundsljud – att loopa ljud

Spelet börjar verkligen ta form, men vi har ett par saker kvar att göra innan det är helt klart. Först och främst skulle vi vilja att det låter som om vi är under havet när vi spelar. För att göra det kan vi lägga ett script i scenen som loopar ett bakgrundsljud.
Klicka på scenen och klicka sen på fliken ”Ljud”. Klicka på den lilla högtalaren för att ladda in ett nytt ljud. Ljudet vi ska ha heter ­”bubbles” och ligger under kategorin ”Effekter”.
När du laddat in ljudet, ta och börja på ett nytt script genom att dra in ett ”när grön flagga klickas på”-block. Ta sen en för alltid-loop och i den lägger du ljudblocket ”spela ljudet [bubbles] tills färdigt”. Nu har du gjort en ljudloop. Om du väljer fel block här, och i stället tar det block som bara heter ”spela ljudet [bubbles]” så kommer Scratch att försöka spela ditt bubbelljud om och om igen så snabbt det kan, och det låter inte så bra. Testa!
Spelet är färdigt! Hur många poäng kan du få? Vi fick som mest 23 när vi testade.
Det här spelet finns att spela på https://scratch.mit.edu/projects/21528024/