Scratch



__// ** - Dennis Thinh Tan Nguyen - 20 april 2012 - 2z ** //__

//__**Scratch**__// er et visuelt objektorienteret program merings sprog som er udviklet af MIT (Massachusetts i USA. Selve programmet er baseret på programmeringssproget Squeak. Programmet fungerer sådan at man dragger og dropper nogle klodser og sætter den sammen. Alt efter hvordan man sætter kodeklodserne sammen, får man forskellige resultater. Nogle virker, andre gør ikke.

Derfra har man mulighed for at uploade sine programmer/spil til scratch egen hjemmeside dedikeret kun til folks uploads med mere. Her kan man så få responds eller give responds, og eventuelt downloade andres værker.

Programmet kan downloades fra deres side: []

__Interface__
Går vi videre og ser på selve scratch, så kan vi starte med dens interface, altså dens brugeroverflade.

Selve interfacet i scratch, er lavet så overskueligt så muligt, da scratch er mest fokuseret på børn eller helt nybegyndere i programmeringens verden.

Her til højre kan vi se et eksempel på scratch interface. Som man kan se så har man selve kodebordet, som er den store vindue i midten. Dette er her man koder sit program.


 * //Til højre i interfacet har vi to vinduer.//**

Den øverste med katten er et vindue hvor man kan køre sit spil i realtime og se hvordan tingene ser ud.

Nedenunder vinduet med katten, har vi et vindue hvor alle ens sprites, eller objekter ligger. Sprites er de "figurere" eller objekter som udgør spillet og for hvert sprite kan man lave en kode til, som definerer dens rolle i programmet eller spil.

//**Til venstre har vi også to vinduer.**//

Den øverste er kategorier for kodeklodserne, mens den forneden viser hvilke klodser der findes i disse kategorier.

__Elementer i Scratch programmeringssproget__
Hvis vi går videre og ser på disse kategorier, så findes der i alt otte kategorier:



Disse otte kategorier kan forstås således:


 * Motion (Bevægelse)
 * Looks (udseende)
 * Sound (lyd)
 * Pen (pensel)
 * Control (kontrolklodser)
 * Sensing (sanseklodser)
 * Operators (ligning / operatører)
 * Variable (variabler)

Motion eller bevægelse definere en sprites retning, position og bevægelse. Her kan an f.eks. indstille en sprite så den går hen til en hvis x eller y koordiant med en bestemt retning eller vinkel.
 * Motion.**

Looks eller udseende definere en sprites udseende. Her kan man får en sprite til at skifte sine kostumer, altså et andet billede(er) som selve spriten har, samt dens størrelser med mere. I looks kategorien kan man blandt andet få spriten til at sige noget i form af talebobler eller tænke bobbler. For uddybet forklaring af dialog i scratch kan findes her: http://prog-htxvejle.wikispaces.com/Scratch+dialog
 * Looks.**

Sound eller lyd er kodestykker som omhandler noget med lyd i forhold til spriten at gøre. Her kan man få spriten til at afspille en lyd, som man importere, med en bestemt lydstyrke med mere.
 * Sound.**

Pen eller pensel er kodestykker som kan få spriten til at efterlade et spor med en given farve, ligsom når man tegner. Her kan man blandt andet styre dens tykkelse, hvor spriten skal tegne og så videre.
 * Pen.**

Kontrolklodserne er en af de mest vigtigste koderklodser i programmet. Det er dem som sørger for at alle handlinger, altså fra de andre kategorier bliver udført. De bestemmer hvornår koderne skal køre, hvor længe de skal køre og hvordan de skal køre
 * Control**

En af de mest brugte koder her er
 * Forever
 * Repeat
 * If.
 * Broadcast / When i receive
 * Wait (until)

Forever er en kode eller løkke der sørger for at den kode som er i mellem forever koden kører forevigt (dog indtil hvis den får kørt et stop script kode eller at programmet bliver standset.)

Dette er et eksempel på foreverkoden. Den fortæller at spritten skal gå til "legs spriten" forevigt, altså at de bliver ved med at være ved legs position. --- Repeat har samme funktion som forever, men her har man bare sat faste rammer om hvor længe koden skal køres.

Foroven har vi et eksempel på hvordan en repeat kode kan se ud --- If er en kode som bestemmer om koden der er i mellem "if" skal blive udført i forhold til en given tilstand. F.eks. at du siger at koden kun skal køre hvis (if) den opnår et antal point osv.

Her er det nogle gange oplagt at bruge forever sammen med if, hvis man ønsker at der hele tiden skal blive tjekket om tilstanden for if koden er opfyldt. Dette er blandt nødvendigt hvis man laver en figur med liv, da man gerne vil have at der hele tiden bliver tjekket om figurens liv er 0 osv. Foroven har vi et eksempel på en sprites liv system. Her siger den at den heletiden (forever) skal tjekke om fjendens liv er lig med nul eller mindre. Hvis disse kriterier er opfyldt vil koden bilve udført, hvis ikke, så skal den bare forsætte med at tjekke. ---

Broadcast er en kode der sørger for at sende en besked/kommando ud. Den som modtager den, udfører så den koden som den er bundet til.

---

Wait er en lille kode der søger for at der bliver ventet indtil en given tilstand er opfyldt. Derefter forsætter koden.

Disse koder som vi lige så på var en af de vigtigste/hyppigste koder som bliver brugt når man programmere i scratch.

Sensingblocks eller sanse koder, definere en sprites sanser i forhold til en given situtation eller objekt. F.eks. om dens afstanden til en given sprite eller om spriten berører en anden sprite eller farve. Dem bruger man generelt sammen med if blokken.
 * Sensing**

Operatør koder er matematiske koder, såsom "større end", "mindre end", "plus stykker" osv. Udover de matematiske koder findes der også **and** og **or** koder som man kan bruge.
 * Operators**

Disse koder kan bruge hvis man gerne vil have at 2 eller flere tilstande skal opfyldes (And) eller en af de mange tilstande er opfyldt (or) f.eks.

Som vi så tidligere så kan vi også se på denn kode at den har en or. Det betyder bare at enten skal fjendens liv være lig med 0 eller at den er mindre end 0 før at koden bliver udført.

Ved operatorerne kan man også bruge en //"not"//. Den siger at tingene i feltet er falsk, derved kan man også bruge til omvendt, så hvis en ting ikke er noget jamen så skal der ske noget.

Der er 2 forskellige variabler man kan bruge i scratch; lister og variabler.
 * Variable**

Variabler er så om sige kodeblokke hvor man kan gemme en given værdi eller tekst. Dem bruger man generelt når man vil lave scores, liv osv eller at man bruger dem som en slags "switch"

Variabler som scores eller liv osv, er generelt bare tal. Disse tal kan så blive ændret efterhånden en anden koder siger "change *Variablens navn* by *et tal*" Her ændres så variablen sin tilstand.

Variabler som switch er en anden måde at bruge variabler på. Her kan man f.eks. sige "set variablen til true/false. Udfra dette kan man f.eks bruge if koden til at tjekke om en given tilstand er opfyldt. F.eks at variablen skal være sandt før at den bliver udført.

Se blandt andet: http://prog-htxvejle.wikispaces.com/Scratch+Variabler for en mere uddybende forklaring omkring variabler. eller http://prog-htxvejle.wikispaces.com/Scratch+lists For en mere uddybende forklaring af lister

Bruger man alle disse funktioner rigtige, så kan man få lavet nogle ret komplekse koder, hvilket gøre at programmet er interresant at arbejde med.

2.z
 * - Dennis Thinh Tan Nguyen**