Blokprogrammering i Scratch

For at du kan få noget i dit spil til at ske, skal du bruge noget kode. I Scratch er det meget simpelt at lave kode, det sker nemlig ved hjælp af blokke! I denne guide vil jeg vise dig alt hvad du skal bruge for at komme i gang med selv at kode i Scratch.

Hvad er kode?

Kode er i bund og grund en række kommandoer som du giver computeren for at den kan udføre nogle opgaver. Det kan for eksempel være at lægge to tal sammen, få noget input fra spilleren, gemme noget i hukommelsen eller meget andet. Normalt er kode noget med mærkelige tegn og uoverskuelige sætninger med underlige ord, men ikke i Scratch. I Scratch er det med blokke som er nemme at forstå, og det er derfor det perfekte sted at lære at kode!

I Scratch sætter du blokke sammen for at få computeren til at gøre det du vil. For eksempel er der en blok der hedder “sig (x)” som får din sprite til at sige noget. Der er også rigtig mange andre slags blokke som er inddelt i 10 kategorier: Bevægelse, Udseende, Lyd, Pen, Data, Hændelser, Styring, Registrering, Operatorer og Flere Blokke. Jeg vil gå i dybden med de vigtigste, men den bedste måde at lære dem at kende, er bare at sidde og lege med dem!

Alle dine kodeblokke hører sammen med en sprite eller en baggrund, og det er den sprite/baggrund de styrer. I det store vindue under ‘Scripts’-fanen kan du se al den kode der hører til den sprite du har valgt. Når du trykker på en anden sprite eller baggrund, vil du se koden der tilhører den sprite du har trykket på.

Du skal derfor ikke blive bange hvis alt din kode lige pludselig er væk, det er nok bare fordi du har trykket på en anden sprite 😀

Forskellige typer blokke:

Bevægelse:

Den første kategori af blokke hedder bevægelse. Det er dem der, som navnet antyder, styrer hvordan spriten bevæger sig.

(du kan klikke på billedet for at gøre det stort)

Der er to slags bevægelses-blokke: dem der går, og dem der drejer. Alle blokkene enten går eller drejer, bare på forskellige måder. Den første blok, den som hedder ‘gå (x) trin’ går (x) trin fremad. Du kan skrive et minus-tal hvis den skal gå tilbage. De to næste blokke er dreje-blokke. De drejer (x) antal grader den vej som pilen peger.

Den som hedder ‘peg mod (x)’ er også interessant. Den får spriten til at pege mod musepilen eller en anden sprite.

De tre nederste blokke giver dig information om spriten, hvis du skal bruge den i koden. Du kan få at vide hvor den er, og hvilken vej den peger.

 

Udseende / lyd:

I ‘Udseende’ kategorien kan du få din sprite til at tale (dog via taleboble, den kan desværre ikke tale rigtigt), skifte kostume eller baggrund, ændre størrelse, vise og skjule din sprite og endda lægge visuelle effekter på.

‘sig (x)’ blokken er meget simpel. Du trækker den bare ind i koden, skriver hvad din sprite skal sige, og voilà, nu har du en taleboble. Det samme gælder for ‘sig (x) i (x) sekunder’, den forsvinder bare efter nogle sekunder.

De andre blokke er også ret ligetil, du skal bare lege med det for at lære det!

Styring:

Styrings-blokkene er en meget vigtig del af at kode. De kan bestemme om nogle blokke bliver kørt eller ej, og hvis de skal køres flere gange.

En ‘hvis (x) så’-blok er en meget kraftig blok. Du sætter en sandt-eller-falsk værdi (boolean) ind, og så vil den køre de blokke der er indeni, kun hvis den boolean du sætter ind i toppen er sand. En boolean blok er spids i enderne. Du kunne for eksempel sætte blokken ‘berører musepil?‘ ind i toppen, og så vil den kun gøre tingene hvis spriten rører ved musepilen.

Der er også en ‘hvis’-blok som har en ‘ellers’ sat på nedenunder. Det betyder at det kode du sætter inden i den nederste del kun bliver kørt hvis din boolean er falsk og koden ovenover dermed ikke blev kørt. Hvis vi bruger musepils eksemplet igen, så vil det øverste kode køre hvis spriten rører ved musepilen, og det nedenunder hvis den ikke gør.

Løkker er også skide smarte, da de kan køre de samme blokke mange gange.

En ‘for evigt’-løkke stopper aldrig med at gentage. Man plejer at have det meste af sin kode inden i sådan en, da det skal blive ved med at køre indtil man stopper spillet.

Data:

Du kan læse om data-blokkene i den tutorial der hedder “Variabler i Scratch”

Hændelser:

Hændelses-blokke er ikke ligesom de andre blokke. Hændelser er den måde du starter din kode. Uden hændelser vil der ikke ske noget. Når der sker det som hændelsen siger, så vil alt den kode der er sat fast på den nedenunder blive kørt.

Den mest brugte hændelse er den der hedder ‘når du klikker på (flag)’, da den aktiveres idet spillet starter. Der plejer at være en ‘for evigt’-løkke bagved, sådan at det kode man skriver inden i ikke stopper med at køre før man stopper spillet.

Du kan også få hændelser der kører når der sker alt muligt andet som når man trykker på en knap, eller man klikker på spriten.

Operatorer:

Operatorer kan lave simpel matematik som plus, minus, gange, og dividere. De blokke der har tegnene ‘<‘ (mindre end), ‘>’ (større end) og ‘=’ (er lig med) bruges til at sammenligne tal. For eksempel kan du tjekke om musen er på venstre side af skærmen ved at skrive:

Et eksempel

Her har vi et simpelt spil hvor vores sprite peger på musen, og følger efter den, så længe den ikke rører ved den. Du kan selv spille det hvis du har lyst (det kræver Flash Player)

Her kan du se koden til spillet:

Først har vi ‘når du klikker på (flag)’ hændelsen. Den kører når spillet starter, og sætter koden i gang. Den er efterfulgt af en ‘for evigt’ løkke, sådan at koden ikke stopper når den har kørt igennem én gang. Vi vil have at den skal blive ved indtil vi stopper spillet.

For at vores fly peger mod musen, skal vi bruge den bevægelses-blok der hedder ‘peg mod musepil‘.

Derefter kommer en ‘hvis’-blok for at tjekke om flyet rører ved musen. Den skal nemlig kun flytte sig hen mod musen, hvis den ikke allerede rører. I ‘hvis’-blokken er der en ‘Registrering’-blok som hedder ‘berører musepil?’. Den tjekker om spriten rører ved musen, men det er ikke det vi vil have. Den skal nemlig flytte sig når den ikke rører. Derfor skal vi bruge den ‘operator’-blok der hedder ‘ikke (x)’. Den tager en boolean-værdi, og giver os det modsatte.