Sissejuhatus

Programmeerimise põhimõisted

Arvuti, programm, andmed

P1See kolmik moodustab omavahel tihedalt seotud programmeerimise alusmõistete süsteemi. Anda nendele lühidalt ammen­davat määratlust on võimatu. Üritame täpsustada neid ja nendega seotud mõisteid järk järgult.

Arvuti

Arvuti kohta esialgu ütleme niipalju, et see on prog­ramm­juhtimisega süsteem, millel on mälu, programmide ning andmete salvestamiseks ja säilitamiseks ning protsessor, mis täidab programme. Arvutil on kuvar info kuvamiseks ning klaviatuur ja hiir info sisetamiseks. Tõenäoliselt on arvuti lülitatud võrku ja omab juurdepääsu Interneti.

Andmed

Andmed on informatsiooni esitus kujul, mis võimaldab seda säilitada, töödelda ja edastada programmjuhtimisega süsteemide  abil. Pea­mis­teks andmete liikideks on:
märkandmed
graafikaandmed: pildid, joonised jm,
heliandmed: kõne, muusika jm.
Kõik andmed esitatakse arvuti mälus kodee­rituna kahendarvude abil
Märkandmed: tekstid, arvud, kuupäevad  jm. Näiteks märkandmete esituses vastab igale märgile (täht, number jm) kindel kahendarv. Arvud, millega tehakse matemaatilisi operatsioone, salvestatakse spetsiaalsetes vormingutes: nn püsipunktarvud (täisarvud) ja ujupunktarvud (reaalarvud).
Märkandmed võivad olla programmis kasutusel üksikväärtustena ehk skalaarandmetena või neist moodustatakse mitme­suguseid andmekogumike: tabelid, massiivid, dokumendid, failid, andmebaasid jm.
Graafikaandmete esitamiseks kasutatakse erinevaid viise ja vorminguid. Graafi­ka loomiseks ja redigeerimiseks on hulgaliselt spetsiaalseid programme. Graafikaandmeid kasutatakse paljudes programmides näiteks tulemuste visualiseerimiseks, animatsioonide ja mängude program­meerimiseks jm.
Graafiline kujutis (joonis, pilt jmt) luuakse vahetult antud programmi täitmisel või teise programmiga tehtud kujutis imporditakse antud programmi keskkonda, kas antud programmi loomisel voi täitmisel. Programm võib täitmise muuta imporditud graafikaobjekti omadusi.
Graafikaandmete salvestamiseks kasutatakse erineva vorminguga faile, mille tähistamiseks kasutatakse tüübitunnuseid: PNG, JPEG (JPG), GIF, BMP jne. Graafilisi kujutisi (faile) sageli sängitatakse teistesse dokumentidesse. Seda võib lugeja näha ka antud dokumendis.
Heliandmed salvestatakse samuti erinevate vormingutega failides (WAV, MP3, MID) ning heliklippe saab sängitada teiste dokumentidesse nagu ka videoandmeid, mis praktiliselt kujutavad nö multimeedia andmed. Enim kasutatavad failivormingud om AVI ja MPEG4. Animatsiooni võib vaadelda kui graafikaandmete erikäsitlust: liikuvad kujutised.

Dokumendid ja failid

Tänapäeva rakendusprogrammides andmed tüüpiliselt kujutavad endast nö integreeritud andmekogumike, mida tavaliselt nimetatakse dokumentideks. Näiteks teksti-, tabeli- ja joonestamisprogrammide dokumendid jm. Ühes dokumendis on reeglina kasutusel erinevat liiki (tekst, arvud, graafika jne) ja organisatsiooniga (tabelid, massiivid jne) andmed. Dokumente säilitakse failides. Paljude rakendusprogrammide juurde kuuluvad arendusvahendid, mille abil saab manipuleerida dokumentidega ja nende osadega.

Objektid ja klassid

Tänapäeval kasutatakse programmide ja rakenduste loomiseks laialdaselt nn objektorienteeritud lähenemisviisi, mille keskseks mõisteteks on objekt.  Veidi lihtsustatult võib öelda, et tegemist on andmete käsitluse teatud üldistusega.
Kitsamas tähenduses on objekt lihtsalt teatud andmeüksus, millega programm saab täita mingeid tegevusi. Üheks tüüpiliseks objekti näiteks on graafiline kujutis ehk graafikaobjekt. Laiemas tähenduses on objekt tarkvara üksus, milles on ühendatud andmed ja protseduurid (programmid), mis määravad tegevusi nendega.
Iga objektiga on seotud teatud valik atribuute ehk omadusi (näiteks graafikaobjekti jaoks nimi, mõõtmed ja asukoht ekraanil jm) ning operatsioone ehk meetodeid, mille abil määratakse tegevusi antud tüüpi objektiga (näiteks graafikaobjekti jaoks ümberpaigutamine ekraanil, pööramine, värvuse muutmine jm). Objekt võib reageerida teatud sündmustele (näiteks hiire klõps, kokkupuude teise objektiga jm).
Klass on üldistus ehk abstraktsioon, määrab määratleb (kirjeldab) antud klassi kuuluvate objektide olemuse ja kasutamise. See fikseerib objektide omaduste valiku, mis on ühesugune kõikidel antud klassi kuuluvatel objektidel, sisaldab protseduure meetodite realiseerimiseks ning malli, mille alusel luuakse uus antud klassi kuuluv objekt.

Programm

Programm on korralduste (käskude, instruk­tsioonide, lausete) kogum, mis määrab miliseid tegevusi ja millises järjekorras peab arvuti täitma andmetega.  Programm tavaliselt korraldab läbi kasutajaliidese ka suhtlemise kasutajaga.
Programmide koostamiseks kasutatakse spet­siaal­seid programmeerimis­keeli ja -süsteeme. Igas keeles on piiratud valik käske ehk lauseid ning nende esitamiseks ja täitmiseks on määratletud kindlad reeglid. Programm võib koosneda mitmest üksusest. Erinevates keeltes kasutatakse viimaste jaoks erinevaid nimetusi: protseduur, funktsioon, skript.
Traditsioonilised programmeerimiskeeled (Basic‑tüüpi keeled, C-keeled, Python, Java jne ) on tekstipõhised. Taolistes kee­ltes kujutavad korraldused lauseid, mis moodustatakse vastavatest elementidest: võtmesõnad (kindla tähendusega ja kujuga sõnad või lühendid: if, for, exit, end jmt), nimed, tekst- ja arvkonstandid, avaldised, kirjavahemärgid jm. Iga keele süntaksi­reeglitega on täpselt määratletud milliseid elemente peab ja võib kasutada antud tüüpi lauses, milline on elementide järjekord, milliseid eraldajad peab kasutama jmt.  Programmi tekst luuakse tekstiredaktori abil, mis on tavaliselt osa antud  programmeerimissüstee­mi keskkonnast.
Viimasel ajal on tekkinud ja kiiresti arenevad ka graafilised programmeerimiskeeled. Taoliste keelte üheks iseloomulikuks esindajaks on Scratch. Esialgu on need eeskätt mõeldud programmeerimise õppimiseks. Kuid näiteks selline tuntud graafiline modelleerimiskeel nagu UML liigub jõudsalt selles suunas, et graafiliste tegevusskeemide alusel genereeritakse täidetavad programmid.
Scratch’is esitatakse korraldused graafiliste plokkide abil. Plokid on fikseeritud struktuuriga ja selle tõttu süntaksi probleeme praktiliselt ei ole. Plokid pannakse kokku hiirega. Plokke saab ühendada ainult kindlal viisil.
Allpool on näiteks on toodud ühesuguse olemusega programmid kolmes erinevas programmeerimiskeeles: Scratch, Visual Basic (VBA) ja Python. Scratch’i näol on tegemist graafilise programmeerimiskeelega, teised esindvad tekstipõhiseid programmeerimiskeeli.
Programmid demonstreerivad mõningaid tegevusi graafikaobjek­tidega: asukoha muutmine ja sujuv liikumine (animatsioon). Scratch’is võib objektiks olla suvaline sprait, VBA korral võib olla tegemist suvalise Exceli töölehel oleva graafikaobjektiga (joonestatud või imporditud). Näidetes on kasutusel ka märkandmed: tekstid ja arvud. Lisaks sellele demonstreerivad programmid dialoogi elemente kasutaja ja programmi vahel: programm „küsib“ kasutaja nime, mille kasutaja saab sisestada klaviatuurilt. Programmid näitavad erinevat tüüpi protsesside (jada, valik, kordus) kirjeldamist.
Jättes kõrvale üksikasjad, võib märgata, et programmid on põhimõtteliselt väga sarnased, vaatamata sellele, et Scratch’is kasutatakse eestikeelset versiooni. Scratch’i programm koosneb ühest skriptist, VBA programm – ühest protseduurist.


Scratch’i skript 

P2

VBA protseduur

Sub Demo_1()
   Msgbox „Tere! Olen Juku!“
   nimi = InputBox("Sinu nimi?")
   If nimi = "" Then
       MsgBox "Katkestan!"
       Exit Sub
   Else

       MsgBox nimi & "! Vaata!"
   End If
   kuju.Left = 0
   For i = 1 To 20
       kuju.IncrementLeft 10
       paus 0.1
   Next i
   MsgBox " Hüvasti!"
End Sub

Pythoni funktsioon


def
Demo_1():
  print ("Tere! ")
  nimi = input("Sinu nimi?")
  if nimi == "":
    print ("Katkestan!")
    return
  else:
    print (nimi+ "! Vaata!")
  
  kuju = Tee_kuju()
  for i in range(20):
    kuju.move(10, 0)
    time.sleep(0.1)
  
  print ("Hüvasi!")

Kõigepealt kuvavad mõlemad programmid tutvustava teate ning pakuvad kasutajale võimalust sisestada klaviatuurilt oma nime. 
P3 P3
Kasutaja poolt kuvatud tekstivälja sisestatav nimi (näiteks Kalle) võetakse mõlemal juhul muutuja nimi väärtuseks. Kasutaja võib jätta ka nime sisestamata, vajutades tühja tekstivälja korral klahvi Enter, klõpsates VBA korral klahvi OK või Cancel. Sellisel juhul jääb muutuja nimi väärtus tühjaks.
Järgnev kui-plokk Scratch’is ja if-lause VBAs kontrollib muutuja nimi väärtust. Kui see on tühi, väljastatakse teade ja programmi töö katkestatakse. Vastupidisel juhul moodustatakse ja kuvatakse sisestatud nimest ja konstandist "! Vaata!" teade (näiteks Kalle! Vaata!) ning programmi töö jätkub.
Graafikaobjekti x-koordinaat võetakse võrdseks nulliga: objekt viiakse nullpunkti. Edasi toimub objekti sujuv liikumine, Selle x-koordinaati suurendatakse järjest 20 korda 10-ne punkti võrra. Sujuva liikumise tagamiseks, tehakse peale igat koordinaadi puutust väikene paus (0.1 sekundit). Scratch’is kasutatakse tegevuste kordamiseks plokki korda, VBAs – for-lauset.
Arvutid saavad täita programme, mis on esitatud antud arvutitüübi jaoks ettenähtud masinakeeles. See koosneb kahendsüsteemis esitatud elementaarsetes käskudest. Programmide tõlkimiseks masinakeelde kasutatakse spetsiaalseid programme, mida nimetatakse translaatoriteks. On kahte liiki kompilaatorid ja interpretaatorid. Kompilaator tõlgib (transleeerib) terve programmi masinakeelde enne täitmist. Iterpretaator tõlgib programmi täitmise ajal. Millist transleerimise viisi kasutatakse sõltub keelest. Translaator on iga programmeerimissüsteemi üheks peamiseks osaks.
Programmeerimissüsteem on reeglina orienteeritud kindlale programmeerimiskeelele ja arvuti arhitektuurile (protsessori tüübile). Lisaks translaatorile sisaldab see tavaliselt spetsiallset redaktorit, mille abil sisestatakse ja redigeeritakse programme, vahendeid kasutajaliideste loomiseks, silumise ja testimise vahendeid jm.
Kasutajaliides. sisaldab vahendeid, mille abil kasutaja saab suhelda antud programmiga (rakendusega): näha tulemusi, muuta, kui on ettenähtud, algandmeid, anda vajalike korraldusi jm. Kasutajaliides tavaliselt tehakse programmi loomise faasis. Programmeerimissüsteemid sisaldavad tavaliselt spetsiaalseid vahendeid liideste loomiseks.

Ülevaade Scratch’ist

Spraidid ja kostüümid

Scratch’i projektide keskseteks komponentideks on graafikaobjektid, mida nimetame spraitideks (ingl. sprite – haldjas või vaim). Projekti programmide (skriptide) abil saab määrata mitmesuguseid tegevusi nendega: muuta asukohta, suurust, värvust jmt, panna nad kõndima, tantsima, tekitama helisid ja muusikat. Süsteemiga tuleb kaasa üsna suur valik spraite, mis asuvad liikide kaupa (inimesed, loomad, asjad jm) erinevates kaustades. Spraitidena võib kasutada ka oma graafikaobjekte.  
Allpool on toodud mõned spraitide näited. Välja arvatud keskel asuv kriipspois Juku, on need kõik võetud Scratch’i spraitide kaustadest. Esimene sprait: jalutav kassipoeg (eestikeelse nimega Kraps), on Scratch’i logoks ja see on laval kohe olemas.


            

Spraidil võib olla mitu kostüümi: tüüpiliselt spraidi erinevad variandid (teisikud). Krapsul on näiteks 2 kostüümi, baleriinil 4. Igal ajahetkel on nähtav ainult üks kostüüm. Vahetades neid programmselt teatud sagedusega, saab tekitada animatsiooni efekte: kõndimine, tantsimine vm.

Skriptid ja käsud

Scratch’i projektis võib olla kasutusel mitu programmiüksust, mida nimetakse skriptideks. Skript (script) koosneb käskudest ehk lausetes, mis kujutavad endast graafilisi plokke. Plokid ühendatakse omavahel hiire abil järjekorras, milles peavad  toimuma tegevused. Skript kuulub alati kindlale spraidile või lavale. Spraidil võib olla suvaline hulk skripte. Skriptid saavad teha omavahel koostööd teadete abil. Skript võib väljastada vajalikul hetkedel käsuga teavita teate. Selle võivad vastu võtta teise või sama spraidi üks või mitu skripti ja hakata tööle.

Allpool toodud skriptide näited pärinevad projektist, kus on kasutusel kolm spraiti: baleriin (4 kostüümi, 1 skript), breikar (4 kostüümi, 2 skripti), Kraps (2 kostüümi, 3 skripti). Soovi korral võite käivitada projekti apleti, et näha kuidas see toimib. Aplett Demo_1.
Juhtivat rolli projektis mängib sprait baleriin, mille skriptist algab programmi põhiosa täitmine, kui klõpsatakse rohelist lippu. Baleriini skript kuvab nn kõneboksis tervituse ja teeb aktiivseks esimese kostüümi. Seejärel 8 korda korratakse kahte tegevust: võetakse järgmine kostüüm ja tehakse paus 0,5 sekundit (käsk oota 0,5). Paus on selleks, et kostüümide vahetus (liigutused) ei toimuks liiga kiiresti. Kordamise tulemusena tehakse kostüümidele nö kaks ringi peale: kui jõutakse viimase kostüümini, jätkatakse algusest.

Spraidi baleriin skript

Spraidi Kraps skriptid

Spraidi breikar skriptid

Peale baleriini tantsu lõppu, kuvatakse kõneboksis tekst „Nüüd teie!“ ja  käsuga teavita Tantsi ja oota väljastatakse teade. Selle võtavad antud juhul vastu spraitide breikar ja Kraps skriptid, mis algavad plokiga kui saabub teade Tantsi ning alustavad korraga tööd. Kui lõpeb mõlema skripti täitmine, jätkub baleriini skripti täitmine. Kuvatakse tekst „Nägemist!“ ja käsk peata kõik lõpetab projekti töö.
Breikari skriptis korratakse 16 korda kostüümide vahetust: tehakse peale 4 ringi.

Kraps ei hiilga eriti tantsuoskusega. Tema tegevused seisnevad praegu järgmises. Kõigepealt tekitab ta heli „näu“, kasutades sama nimega heliklippi, seejärel teeb 10 sammu pikkusega 7 pikselit, vahetades kostüüme imiteerides kõndimist, ning lõpuks teeb jälle kolm hüppet.
Hüpete kirjeldamiseks kasutatakse omaette skripti, mida käivitatakse kaks korda teatega Hüppa. Taolisi nö alamskripte, kasutatakse sageli skriptide pikkuste vähendamiseks. Kui alamskripti mitte kasutada, peaks hüppamise kirjeldamise käsud olema mõlemas kohas põhiskriptis, kus praegu on teavitamise (öeldakse ka pöördumise) käsud. Selline nn alamprogrammide ehk alamprotseduuride kasutamine on väga levinud kõikides programmeerimiskeeltes.

Scratch’i rakenduste loomise liides

Üldjuhul rakenduste loomise liides kujutab endast vahendite ja ka ekraanipiirkondade (ka akende ja vormide) kogumit, mida kasutatakse rakenduste loomiseks. Selle abil tavaliselt realiseeritakse ka rakenduse kasutamise liides ehk kasutajaliides, mille abil kasutaja suhtleb valmisrakendusega.
Allpool toodud pildil on näha Scratch’i rakenduste loomise liidese põhielemendid. Olgu märgitud, et see leiab teatud määral kasutamist ka rakenduste täitmisel. Akna ülemises servas on akna päis, menüü ja tööriistariba. Liidese aknas võib eristada järgmisi suuremaid alasid (piirkondi): lava, kasutusel olevate spraitide ja lava ikoonid, skriptide ala (siit, vastavate lipikute abil, on kättesaadavad ka kostüümide ja helide vahelehed), aktiivse spraidi jooksev info, käskude plokid ja vastavad plokide grupid.

Lava

Lava (Stage) on ekraani (kasutajaliidese) piirkond, kuhu paigutatakse ja kus tegutsevad kõik spraidid. Lava on 480 pikselit lai ja 360 pikselit kõrge. Tegemist on tingühikutega, mille suurus sõltub ekraani suurusest ja kasutatavast eraldusvõimest.
Lava jaoks võib valida kolme olekut ja sellega seotud suurust: terve lava, väike lava ja esitluse olek (presentatsiooni režiim). Vastavad nupud asuvad akna ülemises parempoolses nurgas.
Esimene variant (terve lava) on tavaline lava kasutus rakenduste loomisel ja ka läbivaatamisel. Selles olekus saab lisada uusi spraite, muuta nende asukohta ja suurust jm, on nähtavad ka liidese teised piirkonnad. Väikese lava olek on põhimõteliselt sama, ainult lava mõõtmed on väiksemad. Seda varianti kasutatakse skriptide ala ajutiseks suurendamiseks suurte programmide skriptide läbivaatamisel.
Esitluse olekus on tegemist täisekraan olekuga ja seda kasutatakse rakenduste läbivaatamiseks ja esitluste läbiviimiseks. Nähtav on ainult lava ning käivitamise ja peatamise nupud. Ei saa lisada uusi spraite. Hiire abil saab muuta nende spraitide asukohta, mille jaoks on see ettenähtud tegemisel. Analoogiline on olukord ka siis, kui projekt on paigutatud apletina veebi dokumenti, ainult lava mõõtmed on siis väiksemad.

Lava koordinaadisüsteem on näidatud joonisel. Lava keskpunkti x-koordinadi ja y-koordinaadi väärtuseks on 0. Spraidi koordinaadid (x, y) on selle keskpunkti kaugused telgedest (X, Y). Spraitide koordinaate kasutatakse käskudes: mine x: ... y: ... , pane x... , pane y ... jt. Pöördenurkasid ja liikumise suundasid arvestakse y‑teljest, positiivne nurk on päripäeva. Pöördega peab arvestama käskudes: liigu, osuta suunas, pööra.
Laval võib olla mitu tausta. Vaikimisi on tegemist ühe nö tavalise valge taustaga. Taustu saab lisada, eemaldada ja redigeerida, kui muuta aktiivseks lava ikoon ning klõpsata lipikud Taustad. Taust kujutab endast  lihtsalt graafikaobjekti: pilti.


Käsuga Impordi saab taustu valida süüsteemiga kaasasolevatest taustadest või võtta selleks kasutaja graafikafailides olevaid pilte: GIF-, PNG-, BMP‑, JPG-failid. Käsk Joonista käivitab joonistamis-redaktori, mille abil saab joonistada taustapildi. Käsk Kaamera võimaldab teha taustapildi veebikaameraga.
Käsk Redigeeri võimaldab muuta joonistamisredaktoriga olemasolevat tausta. Käsk Kopeeri teeb pildist koopia. Ristiga nupuke kustutab tausta.

Olgu märgitud, et taustapildid võivad oluliselt suurendada Scratch’i projekti faili. Sellepärast on otstarbekas kasutada käsku Paki pildid, faili kokkusurumiseks.
Lava jaoks võib samuti koostada skripte. Võrreldes spraitidega, on siin käskude valik oluliselt väiksem. Näiteks täielikult puuduvad grupi Liikumine käsud, sest lava liikuda ei saa.  
Lava taustade kasutamine on üsna sarnane kostüümide kasutamisega spraitidel. Lava skriptides saab käskudega võta taust ja järgmine taust vahetada vajalikel hetketel taustu.

Spraitide lisamine, eemaldamine ja redigeerimine

Scratch’i avamisel ja uue projeti loomisel on vaikimisi laval olemas kassi kujutisega sprait (Kraps). Spraite saab lisada, kasutades lava all olevaid nuppe.
Joonista uus sprait. Oma kostüümi joonistamine uue spraidi jaoks joonistamisredaktori (Paint Editor) abil.
Vali uus sprait failist. Saab valida uue spraidi Scrath'i spraitide hoidlast (kaust Kostüümid) või oma graafikafaili suvalisest kaustast (tüübid JPG, BMP, PNG, GIF), mis saab spraidiks.
Vali üllatussprait. Scratch pakub juhusliku spraiti oma hoidlast.
Neist enamasti leiab kasutamist keskmine nupp: Vali uus sprait failist. Uue spraidi lisamisel ilmub selle ikoon spraitide loetelu piirkonnas (vt allpool).
Uus sprait paigutatakse lava keskele. Lohistades hiirega, saab viia spraidi suvalisele kohale laval. Plokkidega grupist Liikumine (näiteks mine x: 100 y: -50, pane x -240 või  pane y 180) saab vajadusel määrata spraidi jaoks täpsed koordinaadid (x ja y). Plokki pole vaja isegi tuua skriptide alasse (kuigi võib), piisab kui sisestada x-i ja/või y-i jaoks sobiv väärtus ploki vastavasse pesasse ja klõpsata plokki.
Kasutades tööriistariba nuppe Kasvata spraiti (Grow sprite) või Kahanda spraiti (Shrink sprite), saab suurendada või vähendada spraiti. Klõpsata vastavat nuppu ja siis üks või mitu korda spraiti. Protsessi kiirendamiseks võib hoida all Shift‑klahvi. Spraiti saab kiiresti suurendada ja vähendada ka klõpsates seda hiire parempoolse nupuga, valides ilmuvast menüüst käsu muuda spraidi suurust ja venitades ilmuvate nooltega nuppu.
Spraidi suuruse muutmiseks võib kasutada grupi Välimus käske võta suuruseks p% või muuda suurust h võrra, võttes p või h jaoks sobiva väärtuse ja klõpsates plokki. Käsus võta suuruseks arvestakse, et spraidi originaalsuurus on 100%.

Spraiti saab paljundada, klõpsates seda laval või selle ikooni spraitide loetelus hiire parempoolse nupuga ja valides ilmuvast menüüst käsu paljunda (duplicate). Paljundamiseks võib kasutada ka tööriistariba nuppu Paljunda. Klõpsata templiga nuppu riistaribal ja seejärel vastavat spraiti. NB! Spraidi paljundamisel tulevad koopiasse kaasa ka kõik originaali kostüümid ja skriptid.
Spraidi menüükäsuga ekspordi see sprait (export this sprite) või Fail‑menüü käsuga Spraidi eksportimine (Export Sprite) võib salvestada spraidi (koos kostüümide ja skriptidega) eraldi faili, mida hiljem saab kasutada teistes projektides.
Uue spraidi loomiseks võib kasutada ka  spraidi menüükäsku ekraani ala uueks kostüümiks, lõigates välja suvalise osa taustapildist või olemasolevast spraidist.

Spraidi  eemaldamiseks võib kasutada  tööriistariba kasku Eemalda (Delete): klõpsata kääridega nuppu ja riistaribal ja seejärel spraiti. Võib kasutada ka menüüd, tehes paremklõpsu spraidil või selle ikoonil ja valides ilmuvast menüüst kustuta (delete).

Kõikide projektis kautatavate spraitide ikoonid on kuvatud spraitide loetelu piirkonnas, mis asub lava all. Iga spraidi jaoks on selle all näidatud nimi. Vaikimisi on spraitide nimedeks Sprait1, Sprait2, ... Spraidi nime saab muuta spraidi jooksva info alas olevas nime väljas. Üldiselt on seda soovitav teha, vähemalt põhispraitide jaoks.
spr_loend

Igal ajahetkel on aktiivne ühe spraidi (või lava) ikoon. Spraidi skriptide, kostüümide ja helide vaatamiseks ja redigeerimiseks, peab muutma selle aktiivseks, klõpsates ikooni spraitide loetelus või tehes topeltklõpsu laval oleval spraidil.  Aktiivne spraidi ikoon on spraitide loetelus esiletõstetud ja selle ümber on sinakas raam.
Jooksev informatsioon aktiivse spraidi kohta on kuvatud kasutajaliidese ülemises ääres keskel.

Jooksva info alas on väli spraidi nimega ja just siin saab seda muuta.
Piirkonnas on näha spraidi keskpunkti jooksvad koordinaadid (x ja y) ning suund.

Spraidi suund näitab suunda, kuhu sprait liigub, kui käivitatakse plokk liigu. Standardsed suunad on: 0 – ülesse, 90 – paremale, 180 – alla, -90 – vasakule, neid pakutakse valimiseks käsus osuta suunas, kuid saab määrata suvalise teise suuna (graadides). Sinine joon spraidi juures näitab selle jooksvat suunda. Vedades seda joont, saab muuta spraidi suunda. Topeltklõps paneb spraidi suuna algseisu (90 kraadi). Suunda tavaliselt muudetakse skriptides grupi Liikumine käskudega: osuta (point) ja pööra (turn) ning kui äärel, põrka.

Jooksva info alas on ka nupud pööramise stiilide määramiseks, millest sõltub  spraidi käitumine suuna muutmisel (näiteks põrkamisel servast). On võimalik kolm varianti:
Saab pöörata (can rotate). Sprait pöördub suuna muutmisel vabalt, vastavalt antud pöördenurga suurusele.
Ainult nägu vasakule-paremale (only face left-right).  Vertikaalne peegeldus (flip). Sprait pöördub (peegeldub) ainult vasakule või paremale.
Ei pöörata (don’t rotate). Spraiti kunagi ei pöörata suuna muutmisel.

Klõpsatus taba kohal, võtab spraidi lukust lahti või lukustab selle. Kui sprait on lukustamata, saab selle asukohta muuta lohistamise teel esitluse (täisekraani) olekus ja veebi leheküljel.

Kostüümide kasutamine, loomine ja redigeerimine

Sageli on spraidil ainult üks kostüüm ja sellisel juhul spraidil ja kostüümil ei ole praktiliselt vahet. Mitme kostüümiga spraidid, võiks öelda, pannakse kokku erinevatest kostüümidest. Põhimõteliselt kujutab kostüüm endast lihtsalt GIF-, PNG-, JPG- või BMP- tüüpi graafikafaili. Scratch’i koosseisu kuuluv spraitide ja kostüümide süsteem kujutab endast graafikafailide kogumit, mis asuvad kaustas Costumes (Kostüümid), mis sisaldab mitut alamkausta eriliiki kostüümidega: Animals (Loomad), People (Inimesed), Things (Asjad) jmt. Scratch’is olevate kostüümide (spraitide) lisamine projekti toimub järgmiselt. Esimene või ainuke kostüüm loetakse käsuga Vali uus sprait failist, valides selle sobivast alamkaustast (grupist).


Kostüümide lisamine toimub ühekaupa käsuga Impordi (Import) vahelehelt Kosüümid (Costumes). Ühe spraidi jaoks mõeldud kostüümid on tüüpiliselt sama nimega ja erinevad numbri või indeksi poolest. Näiteks kõral on näidatud tantsiva Anjuli esimesed kolm kostüümi, kokku on neid viis. 
Nupuga Redigeeri (Edit) saab käivitada joonistamisredaktori ja teha muudatusi kostüümis. Kostüüme saab ka kopeerida ja kustutada

Igale kostüümile vastab järjenumber (1, 2, ...) ja nimi. Kostüüme saab ümberjärjestada, lohistades hiirega. Sellega muutuvad ka kostüümide järjenumbrid. Nime saab muuta, sisestades vastavasse välja uue väärtuse. Paremklõps kostüümil kuvab menüü, mis pakub võimalust muuta kostüüm omaette spraidiks või eksportida see eraldi faili.
Programmides (skriptides) saab viidata vajalikule kostüümile käsuga võta kostüüm nimi|nr. Numbri kasutamisel peab see olema esitatud muutujaga.

Väga sageli kasutatakse kostüümide järjestikuseks vahetamiseks käsku  järgmine kostüüm näiteks kõrval toodud skeemi järgi. Siin arvestatakse sellega, et viimase kostüümi järel võetaks automaatselt esimene.

Põimõteliselt pole mingeid piiranguid kostüümide kasutamises spraitides. Näiteks kõrval olevate ühe spraidi kostüümide vahetamisel, muutub konn printsessiks võib vastupidi.

Joonistamisredaktor

Scratch’i kasutajaliidese koosseisu kuulub lihtne ja tagasihoidlike võimalustega joonistamisredaktor. Selle abil saab luua uusi kostüüme (spraite) ja lava taustu ning muuta ja täiustada olemasolevaid.

Joonistamisredaktoril on järgmised tööriistad
  Pintsel (Paintbrush). Vabakäe joonistamine jooksva esiplaani värvusega.
  Kustukumm (Eraser). Kustutab vastava ala. Piirkond mida kustutakse saab läbipaistvaks
  Täide (Fill). Täidab suletud piirkonna ühtlase või gradiendiga värviga.
  Ristkülik (Rectangle). Joonestab täidetud või ääristatud ristküliku (ruut, kui hoida all klahvi Shift), kasutades jooksvat esiplaani värvust.
  Ellips (Ellipse). Joonestab täidetud või ääristatud ellipsi (ring, kui hoida all klahvi Shift), kasutades jooksvat esiplaani värvust.
  Joon (Line). Joonistab sirgjoone lõigu (horisontaalse või vertikaalne, kui hoida all klahvi Shift) jooksva esiplaani värvusega.
  Tekst (Text). Võimaldab lisada joonistusele teksti.On võimaldab valida kirja tüüpi ja suurust. Igal kostüümil saab olla ainult üks tekstiplokk.
  Valik (Selection). Ristkülikukujulise piirkonna valimine. Piirkonda saab teisaldada lohistamisega, kustutada (klahv Delete) ja pügada (Shift + Backspace).
  Tempel (Stamp). Paljundamine, Valida piirkond ja kopeerida.
  Pipett. (Eyedropper). Võimaldab valida tausta värvust olemasolevast kujundist.
Käsuga Impordi saab lisada redigeeritavale pildile olemasolevaid graafika objekte, sh ka kostüümide pilte.

Helid

Heli saab kasutada suvalise spraidi ja ka lava skriptides. Helide kasutamisel Scratch’i skriptides võib eristada kolme varianti:
Varem salvestatud (lindistatud) heliklippide mängimine käskudega
    mängi heli nimi [ kuni valmis ],
nurksulgudes elment käskude kirjelduses, siin ja edaspidi, tähendab, et antud element ei ole kohustuslik.
etteantud nootide mängimine valitud muusikainstrumendil (akustiline klaver, elektriklaver, viiul ja veel suur hulk instrumente) käskudega
    võta instrumendiks nr ja mängi nooti nr kestvusega sek,
trummide ja löökpillide heli tekitamine eritüüpi trummidel ja löökpillidel  (basstrumm, tamburiin, simbel, aisakell jm) käsuga
    mängi trummi nr kestvusega sek

Heliklippide haldamine: import, lindistamine ja katsetamine, toimub vahelehel Helid (Sounds). Saab ise lindistada helisid või importida valmis heliklippe. Scratch’is saab kasutada MP3 faile ja pakimata WAV‑, AIF‑ ja AU‑faile (8‑ või 16‑bittilises kodeeringus).
Käsu Impordi (Import) käiviamisel pakutakse suurt hulka süsteemiga kassasolevaid heliklippe, mis on jagatud rühmadesse (kaustadesse): Animals (Loomad), Human (Inimesed) jne. Nagu öeldud, saab kasutada ka oma heliklippe (helifaile).
Kui arvutil on olemas mikrofon saab käsuga Lindista (Record) lindistada oma juttu või laulu.

Pildil on todud kolme heliklipi andmete näited vahelehel Helid. Esimene on klipp kassi näugumisega, mis on Scratch’i koosseisus ja autommatselt lisandub Krapsu spraidile. Teine on mikrofoniga lindistatud tekst „Tere! Mina olen Kraps!“. Kolmas on lauluke nimega „la boomba“, kestvusega 45 sekundit. Kõrval on skript, mis demonstreerib helikäskude kasutamist.
Kõigepelt mängitakse heli näu. Täiend kuni valmis käsus määrab, et skripti täitmine jätkub alles siis, kui heliklipp on lõppenud. Järgmises käsus täiendi puudumine tähendab seda, et käivitakse heliklipp ja kohe jätkatakse skripti täitmist: paralleelselt kõnega kuvatakse sama tekst kõneboksis. Edasi demonstreeritakse veidi programmi poolt loodavat „muusikat“ . Lõpetuseks pannakse mägima heliklipp „la boomba“.
Pidage silmas, et heliklipid oluliselt suurendavad projekti mahtu. Sellepärast on otstarbekas Redigeerimise menüü käsuga Paki helid suruda neid kokku.

Skriptide koostamise üldpõhimõtted

Käskude liigid ja grupid

Scratch’i käsud ja plokid on jagatud funktsioonide alusel kaheksasse gruppi. Lipikud gruppide nimedega asuvad liidese ülemises vasakpoolses nurgas. Kui klõpsata lipikut grupi nimega, kuvatakse allpool olevas alas gruppi kuuluvate käskude plokid. Korraga saab olla aktiivne üks grupp. Praegu on selleks grupp Liikumine. Plokide üksikasjalik kirjeldus on toodud õppevahendi lisas. Skriptide alas on toodud skript, milles on kasutusel plokid kõigist kaheksast grupist.

as

ad
Skripti abil imiteeritakse auto (spraidi) ringliiklust laval. Auto alustab liikumist lava vasakust servast (x = -240) ja liigub sammhaaval paremale. Kui auto jõuab paremasse äärde (x > 240) peidetakse see, tehakse paus 1 kuni 3 sekundit, viiakse auto vasakusse serva ja tehakse see nähtavaks. Auto läheb järgmisele ringile.

Auto liikumise kiirus sõltub muutuja kiirus, mille väärtusest saab muuta liuguri (kerimisriba) abil. Auto algkiiruseks (muutuja kiirus väärtuseks) võetakse juhuslik väärtus vahemikus 5 kuni 20 ühikut. Sõit kestab seni, kuni muutuja kiirus väärtus pannakse nulli. Auto järel jääb värviline joon, mis tekitakse pliiatsi abil. Üksikasjad ei ole praegu eriti olulised. Programmi tööd ja selgitusi võib näha klipil Auto_Demo.

Plokkide ühendamine ja redigeerimine

Skripti (protseduuri) loomiseks peab lohistama vajalikud plokid plokkide alast skriptide piirkonda. Siin tekkib ploki koopia, originaal jääb oma kohale. Klõpsates plokki hiire parempoolse nupuga ja valides ilmuvast menüüst käsu abi (help), saab abiinfot ploki kohta. Samas on ka käsk ploki paljundamiseks.
Plokid ühendatakse hiirega pinuks (stack). Spetsiaalsed plokide liidese elemendid võimaldavad ühendada plokke ainult ühel viisil. Klõps skripti (pinu) suvalisel kohal käivitab selle plokkide järjestikuse täitmise ülevalt alla.
Kui lohistada lisatavat plokki skripti (pinu) olemasoleva osa kohal, näitab valge riba kohta, kuhu saab panna ploki nii, et see ühilduks teiste plokkidega. Neid kohti on üldjuhul mitu. Peab valima selle koha, mis on vajalik skripti täitmise seisukohast. Plokke saab lisada pinu ette, keskele ja lõppu. Ploki eemaldamiseks skripti alast, lohistada see plokkide piirkonna ala suvalisse kohta ja plokk kaob.
Pinu (skripti) saab teisaldada skriptide alas, vedades seda ülemisest plokist. Kui lohistada välja plokk pinu keskelt, tulevad sellega kaasa kõik allpool olevad plokid.
Eristatakse kolme plokitüüpi: pinuplokid, päiseplokid ja viiteplokid.
Pinuplokid (Stack Blocks). Sellistel plokidel nagu pp ja pr on õõnsus üleval ja muhk all, nende abil saab plokke ühendada pinuks. Mitmetel pinuplokkidel on sees avad (väljad), mis on ettenähtud vajalike väärtuste ehk argumentide esitamiseks.  Näiteks plokis  on argumendiks sammude (pikselite) arv, plokis mine1 on argumentideks sihtkoha koordinaadid (x ja y). Tavaliselt on nendes väljades mingid väärtused: näiteks 10 plokis liigu ja nullid  plokis mine. Need väärtused võib asenada tippides uued väärtused (konstandid), näiteks  ja  või paigutades välja viiteploki muutuja või avaldisega, näiteks  ja x0y0.
Mõnedel plokidel on sees avanevad rippmenüüd, kust saab valida vajaliku väärtuse nagu "hiir" plokis osuta ja "näu" plokis mängi heli gg g. Tegemist on samuti argumentidega.
Pinuplokidesse, millel on C kujuline "suu" nagu k10, saab paigutada teisi pinuplokke. Sellisel juhul on tegemist nn liitplokidega. Liitplokk sisaldab endas teisi liht‑ ja liitplokke. Ülaltoodud auto skript sisaldab liitplokk korda kuni kiirus=0 kolme lihtploki ning ühte liitplokki kui. Viimane sisaldab seitset lihtplokki.
Pinuplokid moodustavad põhiosa plokkidest. Nende abil saab määrata vajalike tegevusi spraitidega ja juhtida tegevuste täitmise järjekorda: kirjeldada valikuid ja kordusi jm. Teistes programmeerimiskeeltes vastavad taolistele plokidele laused või pöördumised protseduuride poole.
Päiseplokid (Hats). Sellistel plokidel, nagu klahv, on kumer ülemine serv ja all on ühendamise muhk. Päiseplokid paigutakse pinude peale ja need reageerivad vastavatele sündmustele: vajutusele etteantud klahvile (näiteks tühik), spraidi või lava klõpsamisele, teate saabumisele teiselt skriptilt jm. Sündmuse esinemisel käivitatakse ploki all olev skript.

Viiteplokid (Reporters). Need plokid, nagu g, h, on ettenähtud teiste plokkide sisendalade täitmiseks. Viiteplokid ümardatud otstega, nagu p, g, a võimaldavad viidata arvudele ja stringidele, kasutades muuhulgas ka muutujaid ja avaldisi. Neid paigutatakse ümardatud otstega ja ristkülikukujulistesse avadesse, nagu g, . Viiteplokid teravatipuliste otstega, nagu d, d viitavad tingimustele ja loogilistele väärtustele (tõene või väär), neid saab paigutada teravatipulistesse ja ristkülikukujulistesse avadesse, nagu f, u.
Mõnede viiteplokide ees nagu viit6 (neid skriptides ei kasutata), on märkeruut. Kui klõpsata seda, ilmub laval nn monitor, milles kuvatakse antud viiteploki väärtus. Viimase muutumisel uuendatakse ka monitoris olev väärtus. Monitor võib kuvada viiteploki väärtust mitmes erinevas vormingus.

Skripti saab salvestada pildina,  klõpsates skripti ala suvalises kohas parempoolse hiirenupuga ja valides ilmuvast menüüst salvesta skriptide pilt (save picture of script). Piltidena salvestatud skripte võib näha ka antud materjalis.

Skriptidele võib lisada kommentaare: selgitavaid tekste. Kommentaari lisamiseks peab klõpsama skriptide ala suvalises kohas parempoolse hiirenupuga ja valima ilmuvast menüüst lisa kommentaar (add comment). Ilmub kollane kommentari ala, kuhu saad tippida selgituse.
Kommentaari ala suuruse muutmiseks, peab seda lohistama paremast äärest. Klõpsates üleval olevat kolmnurka saab panna ala kokku (jääb ainul esimene rida) ja suurendada seda tagasi. Kommentare saab lisada skriptide piirkonna suvalistesse kohtadesse, neid saab teiseldada lohistamisega hiirega. Kommentaari saab siduda vajaliku plokiga, lohistades kommentari ploki kohale ja lastes seejärel lahti.


 

Näited

Järgnevalt on toodud mõned näited harjutamiseks. Näidetega on püütud illustreerida Scratch'i põhielemente ja selle rakenduste loomise põhimõtteid. Näided illustreerivad ka programmeerimise ja modelleerimise mõningaid üldiseid põhimõtteid. Soovitame lugejal need realiseerida, täiendada ja muuta ning tuginedes neile teha mõned omapoolsed rakendused.

Näide. Kraps, papagoi ja pall

Ülesande püstitus

Kraps jalutab rahulikult palliga edasi‑tagasi rannas. Järsku ilmub taevasse papagoi, kes lendab ringi ja narrib Krapsu. Kraps üritab, mängija abiga, tabada palliga papagoid: palli lennutamiseks, peab kasutaja vajutama tühiku klahvi. Mängu eesmärgiks on tabada papagoid võimalikult rohkem kordi (soovitav ilma möödavisketeta) valitud aja jooksul (max_aeg).
Kasutusel on kolm spraiti: Kraps, papagoi ja pall. Kraps liigub edasi-tagasi lava ühest servast teisse. Pall liigub koos Krapsuga, välja arvatud aeg, millal toimub vise: pall lendab ülesse. Papagoi lend toimub nö „ringi-ratast“: ta liigub lava parema servani, siis kaob mõneks ajaks ja ilmub uuesti lava vasakus servas. 
Rakenduse tegutsevat prototüüpi võite näha alloleval apletil.
NB! NB! NB! Käivitamiseks peab vajutama tähe A klahvi! Kui rakendus on apletina veebi dokumendis, ja selle käivitamiseks kasutatakse rohelist lippu, läheb programm automaatselt käima apleti laadimisel, mis ei ole alati soovitav (ka praegu).

Krapsu põhiskript

Skriptide loomine, taustade lisamine, spraitide liikumine, kostüümide kasutamine, helide mängimine ja tekstide kuvamine, pauside tekitamine, spraitide põrked, lõputu kordus, skriptide käivitamine rohelise lipuga, peatamine punase nupuga.

Sprait Kraps on laval juba olemas. Võib kohe teha skripti ja lisada taust.

kpp_kraps1

Skript käivitub, kui klõpsatakse rohelist lippu. Kõigipealt käsuga mängi heli tekitatakse heli, vastav heliklipp on kaasas spraidiga Kraps. Käsuga ütle kuvatakse kahe sekundi jooksul nn kõne-boksis antud tekst
             

Seejärel käsuga (plokiga) lõputult käivitatakse kordus: kollase ploki sees olevaid käske täidetakse formaalselt lõputult. Praktiliselt, muidugi, lõputult see ei toimu. Scratch’i programmi töö saab alati katkestada lava ülemises parempoolses nurgas asuva punase nupuga. Edaspidi tekitame aga programmis käsud, mis etteantud aja möödumisel katkestavad programmi töö.
Kordused mängivad väga olulist rolli programmeerimises. Kõikides keeltes on on vahendid (käsud või laused) tsükliliste protsesside ehk korduste kirjeldamiseks. Lisaks, siin kasutatavale, lõputu kordusele, on Scratch’is olemas plokid ka teist liiki korduste kirjeldamiseks (juhtimiseks): etteantud kordamise arvuga kordused (korda n), kordamine seni, kuni saab tõeseks antud tingimus (korda kuni tingimus) jm.
Praegu igal kordamisel täidetakse jäjest neli käsku. Käsk liigu 10 sammu viib Krapsu 10 pikselit paremale või vasemale, sõltuvalt suunast. NB! Piksel on Scratch’is ühik, mille suurus sõltub ekraani suurusest ja kasutatavast eraldusvõimest. Mitte ajada segi Krapsu sammudega, mille kujutis tekkib käskude liigu ja järgmine kostüüm koostoimel.  Krapsul on kaks kostüümi, mille järjestikune vahetamine, tekitab käimise imitatsiooni. Kostüüme võib näha, kui klõpsata lipikud Kostüümid spraidi oleku piirkonnas (üleval keskel)
Käsk oota 0,1 sek tekitab pausi pikkusega 0,1 sekundit. Antud tüüpi käsk leiab laialdast kasutamist animatsioonide realiseerimisel, võimaldades sobiva kiirusega muuta kuju (siin spraidi) asukohta, suurust või vormi. Näiteks praegu sammude arvuga käsus liigu ja pausi pikkusega käsus oota, saab reguleerida liikumise kiirust.
Käsu kui äärel, põrka näol on tegemist tingimusliku käsuga. Tavalise ehk otsese käsu (nagu näiteks siin: ütle, liigu, oota jt) poolt määratud tegevus täidetakse alati, kui täitmisjärg jõuab käsuni.  Tingimuslikus käsus määratud tegevus(ed) toimub ainult siis, kui on tõene antud tingimus või toimub vastav sündmus. Antud juhul toimub tegevus (põrge) ainult siis, kui sprait on jõunud lava äärde (serva), kusjuures käsku, täidetakse: kontrollitakse tingimust, igal kordamisel. Tingimuste tegevuste ehk valikute kirjeldamiseks on Scratch’is (nagu ka teistes programmeerimiskeeltes) mitmeid vahendeid, millega tutvume üsna pea.
Põrke olemus seisneb Scratch’is selles, et spraidi suund muudetakse vastupidiseks (180 kraadi). Nö vaikimisi, pööratakse ka spraiti 180 kraadi. Selle tulemusena hakkab näiteks Kraps liikuma pea alaspidi. Et seda ei toimuks, peab lülitama sisse spraidi jooksva info piirkonnas pööramisstiili nupu „ainult nägu vasakule-paremale“.

Papagoi lisamine ja selle põhiskript

Spraitide ja kostüümide lisamine, skriptide kopeerimine ja redigeerimine, tingimused, valikud ja kui‑plokid, spraitide asukoha määramine, spraitide peitmine ja kuvamine, spraitid „ringliiklus“, juhuslikued arvude kasutamine.

Valime süsteemiga kaasasolevatest spraitidest (käsk „Vali uus sprait failist“)  papagoi spraidi: kaustast Animals – pairot1_a. Spraidil on kaks kostüümi. Esimene tuleb spraidi lisamisel, teise peab lisama eraldi. Selleks aktiveerida lipikuga Kostüümid kostüümide piirkond, klõpsata nuppu Impordi ja valida samast kaustast kostüüm  pairot1_b.

KPP_Pa1
Edasi võiks kopeerida Krapsu skripti papagoile. Selleks lohistada skript papagoi ikooni kohale nii, et selle ümber tekkib hall raam ja lasta lahti. Seejärel eemaldada skriptist käsud mängi heli ja ütle. Et papagoi liiguks kiiremini, võiks käsus liigu suurendada sammude (pikselite) arvu näiteks 20-ni. Tulemuseks saadakse skript, mille toimel papagoi liigub edasi-tagasi samamoodi nagu Kraps. Proovige!
kk
Vastavalt stsenaariumile peab aga papagoi liikuma mitte edasi-tagasi vaid nö ringi. Selleks võib asendada käsu kui äärel põrka kõrvaltoodud kui‑plokiga. Plokis olevad käsud täidetakse siis, kui sprait jõuab lava paremasse äärde (x‑asukoht on suurem kui 240). Proovige!

Käsk peida teeb papagoi nähtamatuks. Käsus oota on pausi pikkus määratud juhusliku arvudega (plokk juhuarv grupis Tehted). Järgnev käsk pane x -240 viib spraidi lava vasakusse serva. Käsk näita teeb papagoi nähtavaks.
Et teha tabamine raskemas, võiks käsu pane x -240 asemel võtta näiteks käsu pane x juhuarv -240 kuni 120. Papagoi ilmub nüüd nähtavale juhuslikus kohas antud vahemikus. Proovige!

kk

Lisame veel plokki lõputult kahendvaliku kui‑ploki, mis sõltuvalt papagoi asukohast kuvab kõneboksi erineva tekstiga. Kui papagoi x koordinaat on väiksem nullist, kuvatakse tekst „Kraps on koba!“, vastupidise juhul – „Mind ei taba!“

Krapsu liigutamine nooleklahvidega

Spritide liigutamine nooleklahvidega, klahvisündmused, spraitide pööramine.

Et hõlbustada Krapsul (kasutajal) papagoi jälitamist, tekitame võimaluse Krapsu liikumise suuna muutmiseks ja ka tema liigutamiseks vastavas suunas nooleklahvide (vasak nool ja parem nool) abil.
Päiseploki kui vajutakse klahvi klahv abil saab käivitada sellega algava skripti, vajutades antud klahvile. Kui klõpsata plokis asuvat kolmnurgakest, avaneb menüü klahvide loeteluga, kust saab valida sobiva klahvi.

kl

Iga kord kui vajutakse antud nooleklahvi, pööratakse Krapsu selles suunas ja liigutakse 10 sammu ja vahetakse kostüümi. 

Spraidi pall lisamine ja selle vertikaalne liikumine: lendamine

Spraidi loomine joonistamisredaktoriga (soovitav), esmatutvus muutujatega, lõpmatu kordus katkestusega, juhitav (eelkontrolliga) kordus, sündmused puudutab spraiti ja serva, skriptide peatamine.

Palli spraidi võib lisada kaustast Things (Asjad) või luua see Jonistamisredaktoriga. Soovitame lugejale proovida just teist varianti. Valida käsk Joonista uus sprait ning joonistada täidetud ring ning panna sellele erinevates värvides laike ja täppe. Üldiselt aga ei oma erilist tähtsus, kuidas pall tekkib. Olulisem on sellega seotud tegevused (skriptid).
Palli kaheks põhitegevuseks on liikumine koos Krapsuga ja lendamine. Siin peatume viimasel. Palli viskamise eesmärgiks on papagoi tabamine. Programm peab loendama visete ja tabamuste arvu. Selleks peab võtma kasutusele muutujad. Pikemalt ja täpsemalt tuleb muutujatest juttu edaspidi, siin aga lühidalt.
Muutuja all programmeerimises mõistetakse nimega varustatud kohta arvuti mälus (pesa või väli), kuhu programm saab vastavate käskude abil salvestada muutuva suuruse väärtusi. Salvestatud väärtust saab programm kasutada hiljem näiteks uue väärtuse leidmiseks.
Muutujaid luuakse grupi Muutujad korraldusega Tee muutuja. Loodud muutujate nimede loetelu asub grupi käskude alas. Koos esimese muutuja loomisega, tekkivad ka käsud tegevuste määramiseks nendega. Kaheks peamiseks on: 
   võta muutuja = väärtus ja
   muuda muutuja väärtus võrra
Tegemist on nn omistamiskäsu (omistamislause) kahe variandiga. Käskudes esitatakse muutuja nime abil, väärtus võib olla antud konstandi, muutuja või avaldise abil. Öeldakse, et väärtus omistatakse muutujale ehk salvestatakse muutujas. Muutuja jooksvat väärtust võib näha laval nn monitoris, kui lülitada selle nime ees olev märkeruut.
Praegu oleks meil esialgu vaja kahte muutujat (pesa). Võtame nende nimedeks viskeid ja tabas. Iga viske korral suurendatakse visete loendurit (muutuja visked väärtust). Kui pall tabab papagoid, suurendakse ühe võrra muutuja tabas väärtust.

k

k

Skripti tegemisel arvestame järgmisega. Skripti käivitab kasutaja, vajutades klahvile tühik. Pall lendab vertikaalselt ülesse Krapsu kohalt. Selleks viiakse pall käsuga mine  Krapsu kohale. On kaks võimalust, kas pall tabab papagoid või mitte. Esimesel juhul papagoi korraks peidetakse ja see ilmub samal kõrgusel juhuslikus kohas.  Teisel  juhul liigub pall lava ülemise servani ja lend lõppeb.
Võrdluseks on toodud kaks varianti, mis erinevad korduste juhtimise poolest.
Esimeses variandis kasutatakse korduste juhtimiseks plokki lõputult. Formaalselt ploki sees olevaid käske täidetakse lõputult, kuid sisuliselt on ploki sees isegi kaks nö katkestajat: kui‑plokid.
Esmeses plokis kontrollitakse igal kordamisel tingimust (sündmust), kas pall puudutab papagoid? Kui jah, siis kordus (skripti töö) katkestatakse, eelnevalt suurendatakse muutuja tabas väärtust ühe võrra, peidetakse pall ja väljatstakse teade Pihtas.
Teises kui‑plokis kontrollitakse, kas pall puudutab serva? Kui jah, pall peidetakse, väljastakse teade Möödas ja peatatakse (katkestatakse) skripti töö ja koos sellega, loomulikult, ka kordus. Olgu märgitud, et teine sündmus saab toimuda ainult siis, kui pall ei taba papagoid ning lava servaks, millega saab pall puutuda kokku on ainult ülemine serv. 
 Viiteplokk puudutab sprait |serv asub grupis Andurid.

Teises variandis täidetakse samu tegevusi, kuid nö töökoraldus on mõnevõrra erinev. Korduse juhtimiseks kasutatakse plokki korda kuni tingimus. Tegemist on nn eelkontrolliga kordusega. Ploki täitmisel enne igat kordamist kontrollitakse, kas ploki sees olev tingimus on tõene. Kui jah, lõpetakse kordamine ja skripti täitmine jätkub anud plokile järgnevast plokist. NB! Paneme tähele, et lõputu korduse ploki järel teisi plokke olla ei saa! All ei ole ühendamise võimalusi! Öeldakse, et kordust täidetakse seni, kuni tingimus saab tõeseks. Ka siin on korduse sees nö katkestaja: täpselt samasugune kui‑plokk nagu esimeses variandis, mis katkestab korduse, kui pall tabab papagoid.

Suhtlemine spraitide ja skriptide vahel

Teadete saatmine ja vastuvõtmine, käsud teavita nng teavita ja oota, graafikaefektid: värvid, keere jm.

Palli skripti täitmisel väljastatakse (saadetakse) alati üks kahest teatest: Pihtas või Möödas. Mõlemat teadet on valmis  vastu võtma nii Kraps kui ka papagoi. Teadete (öeldakse ka signaalide) saatmise ja vastuvõtmine on väga tähtis mehhanism suhtlemisel objektide vahel OO‑süsteemides. Traditsioonilistes programmeerimiskeeltes vastab sellele teatud määral nn alaprogrammide kasutamine.
Teadete saatmisel võib kasutada kahte varianti: teavita t_nimi ja oota või teavita t_nimi. Siin t_nimi on teate nimi. Kõik skriptid, mille esimeseks plokiks on plokk kui saabub teadesama nimega, alustavad tööd (käivituvad). Teate saatnud skripti töö jätkamine, sõltub variandist. Esimesel juhul skript ootab, kuni lõpetavad töö kõik teate vastuvõtnud skriptid ja seejärel jätkab, teisel juhul jätkab tööd kohe peale teate saatmist. Kui teate saatnud skript vajab jätkamiseks teate vastuvõtnud skriptide tulemusi või nende töö lõppu, peab kasutama esimest varianti. Teatud juhtumeil ei ole aga tähtis millist varianti kasutada.
Praegu  teadete alusel käivituvate skriptide poolt täidetavad tegevused ei oma erilist tähtsust. Skriptid demontstreerivad teadete kasutamise põhimõtteid ja Scratch’i mõningaid vahendeid, näiteks nn graafikaefektide kasutamist.
Papagoi skript Pihtas peidab korraks spraidi, muudab selle värvi ja toob ta nähtavale juhuslikus kohas. Olgu märgitud, et antud juhul on üldiselt oluline, et käsus teavita kasutatakse  nö ootamisega varianti. Enne kui lõpetatakse palli lendu juhtiva skripti töö, tehakse muutused papagoiga. Kui ootamist ei ole, lõpetatakse selle töö kohe ja skripti saab kohe uuesti käivitada ning võivad tekkida tegevuste ülekattavus. Papagoi skript Möödas mängib heliklipi naer, viib papagoi korraks allapoole ja kohe tõstab tagasi ülesse. Selle käivitamisel ootamist ei kasutata.

Papagoi skriptid

k

 

k

Krapsu skriptid

k

 

k

Krapsu skriptid Pihtas ja Möödas lihtsalt demonsteerivad graafikaefektide kasutamist käsuga pane e_nimi efekt väärtus.  Siin e_nimi on efekti (omaduse) nimi, mille saab valida avanevast menüüst, väärtuse võib esitada konstaandi, muutuja vöi avaldise abil. Proovige!
Teistele spraitidele teadete saatmise üheks oluliseks põhjuseks on see, et üks sprait ei saa määrata tegevusi teise spridiga ja muuta selle omadusi.

Palli liikumine koos Krapsuga ja lendamine

Teise skripti omaduste (asukoht, suund jm) kasutamine, olekumuutujate kasutamine, muutujate algväärtustamine.

See ei olegi päris triviaalne. Võiks proovida kopeerida Krapsu skript pallile ja panna see paralleelselt tööle, et pall liiguks samuti edasi-tagasi. Kuid neid kahte liikumist on üsna iülikas sünkroniseerida. Spraidid ei jõua samal ajal servani, tekkib vahe nende vahel. Asi läheb veel keerulisemaks, kui panna pall pöörlema. Seda võiks proovida teha käsuga pööra.
Lihtsam ja kindlam on teha skript Tule, mis viib palli pidevalt Krapsu juurde, kui selle asukoht muutub. Selle skripti käivitab Kraps käsuga teavita Tule ja oota. Käsk tuleb panna Krapsu skripti ploki lõputult sisse. Paneme tähele, et praegu on otstarbekas kasutada teavitamist ootamisega, sest pall peaks jõudma kohae enne, kui Kraps teeb järgmise sammu.

Palli skript Tule

k

Käsk mine Kraps viib palli Krapsu keskkohta. Käsk muuda y -40 võrra viib palli allapoole. Käsk kui teeb kindlaks Krapsu liikumise suuna ja vastavalt sellele pöörab palli. Viiteplokk, mille abil tehakse kindlaks suund asub grupis Andurid ja see võimaldab saada ühel spraidil infot teise spraidi omaduste kohta: koordinaadid, suund, kostüümi number, suurus jm. Esimeses väljas saab valida menüü abil omaduse, teises spraidi nime.

Kui nüüd panna programm tööle, siis ilmneb, et seni kui toimub kõrvuti jalutamine toimib kõik normaalselt, kui aga proovida teha vise, hakkab pall korraks liikuma ülesse ja siis kohe Krapsu juurde tagasi. Toimib käsk teavita Tule, mis toob palli tagasi. Peaks tekitama olukorra, et kui toimub palli lend (vertikaalne liikumine) ei peaks ta liikuma koos Krapsuga.
Probleemi lahendamiseks on mitmeid võimalusi. Neist üheks on nn olekumuutuja kasutamine, mis on üsna tüüpiline programmides. Olekumuutujal on kaks võimaliku väärtust: üks vaäärtus (näiteks 1) vastab ühele olekule (näiteks pall lendab), teine (näiteks 0) – teisele (pall ei lenda). Sageli kasutatakse taolistel juhtudel loogikaandmeid ehk tõeväärtusi. Taoline andmete liik on olemas kõikides programmeerimiskeeltes. Üheks väärtus on tavaliselt tõene (true), teiseks – väär (false).
Võtame kasutusele olekumuutuja lendab, mille väärtuseks on 1 (pall lendab) või 0 (ei lenda). Skriptide töö saab korraldada nii, et arvestakse olekumuutuja väärtusega ja muudetakse seda vastavalt olekule. Praegu võib see toimuda nii. Programmi käivitamisel antakse muutujal lendab väärtus 0 (ei lenda). Krapsu põhiskriptis kasutatakse kui-plokki: kui lendab=0 siis teavita Tule. Kui käivitakse palli põhiskript (vajutatakse tühiku klahvile), omistakse muutujale lendab väärtus 1. Kui lend lõppeb, kas papagoi tabamisega või jõudmisega servani, omistatakse muutujale väärtus 0.

Krapsu põhiskript
k
Muutujate algväärtustamine

k

Palli põhiskript

k

Krapsu ja palli põhiskriptide lõplikud variandid võiks näha välja nagu toodud ülalpool. On toodud ka muutujate algväärtustamise skript, mis võib kuuluda suvalisele spraidile.
Üheks võimaluseks probleemi lahendamiseks võiks olla ka filmindusest tuntud nö "kombineeritud võtete" ehk dublööri ("kaskadööri") kasutamine. Võib võtta kasutusele teise palil: üks pall liigub koos Krapsuga, teine – lendab. Sell ajal, kui teine pall lendab, esimene peidetakse ja vastupidi. Proovige!

NB! Kontroll, kas pall tabab papagoid, on praegu palli skriptis. Teisiti võib öelda, et sündmust kontrollib (vajadusel ka reageerib sellele) pall. Püstitatud eesmärgi saavutamiseks võiks toimida ka vastupidi: panna käsk kui puudutab pall papagoi skripti, so sündmust võiks kontrollida papagoi. Selle variandi realiseerimine on keerukam, läheks näiteks vaja veel ühte olekumuutujat jm. Proovige! Tegemist oleks ka nö ülemäärase ressursi kulutusega: kontroll toimuks kogu aeg ka siis, kui pall ei lenda ja tabamine pole võimalik. Kontrolli võivad teha ka mõlemad objektid nö paralleelselt. Eesmärkide seisukohast oleks see täitsa ülearune.

 Programmi töö lõpetamine

Programmide töö lõpetamine etteantud tingimuste alusel, taimeri kasutamine, aja kuvamine, käsk peata kõik, käsk oota kuni.

Vastavalt stsenaariumile, peab mäng kestma seni, kuni ületakse etteantud aeg. Selleks peab kõigepealt võtma kasutusele ühe muutuja, mille väärtus võimaldab anda ette aja. Oleks hea, kui ekraanil saaks näha mängu algusest möödunud või lõpuni allesjäänud aega.
Loome kaks muutujat: max_aeg ja aeg. Esimesele lisame liuguri (kerimisriba), mille abil saab muuta muutuja väärtust. Liuguri saab lasta kuvada käsuga liugur monitori menüüst (paremklõps), samast saab määrata ka  muutuja  minimaalse ja maksimaalse väärtuse (vaikimisi 0 ja 100 sekundit).
Aja kuvamiseks peab võtma kasutusele taimeri, mida väga sageli kasutatakse mängudes ja ka muudes rakendustes. Taimer pannakse käsuga taimer algseisu (grupis Andurid) kõigepealt nulli ja edasi see käib pidevalt. Taimeri jooksvat väärtust saab lasta kuvada laval, lülitades sisse märkeruudu ploki taimer juures. Sageli on otstarbekas omistada taimeri väärtus mingile muutujale.

k

 

k

Joonisel on toodud skript aja kuvamiseks ja kontrollimiseks. See töötab pidevalt paralleelselt teiste skriptidega, kuni tingimus taimer > max_aeg saab tõeseks. Siis kuvatakse teade ja käsk peata kõik lõpetab kõikide skriptide töö.
Alternatiivina (või ka lisaks) vaadeldud variandile, on toodud paremal skript, mis lõpetab programmi töö, kui visete arv saab võrdseks 10‑ga (parem oleks muutuja). Siin on iseloomulikuks käsu oota kuni tingimus kasutamine. See käsk käivitab omamoodi varjatud korduse, vastav skript on kogu aeg aktiivne ja kui tingimus saab tõeseks, programmi töö peatatakse.

Näide „Labürint ehk Pacman“

Näitega üritame kinnistada eespool vaadeldud mõisteid ja vahendeid ning tuua sisse mõned täiendavad elemendid. Peamine näites on objektide ja muutujate kasutamine, protsesside juhtimine, koostöö objektide (spraitide) ja skriptide vahel, rakenduste disain.

Ülesande püstitus ja lahenduse üldpõhimõtted

Tegemist on nö  klassikalise mänguga, mille jaoks on palju erinevaid variante. Antud juhul üritame teha järgmist. Pacman (mingi graafiline kujund) liigub labürindis ja korjab kullakange, programm leiab jooksvalt kogutud kulla maksumuse. Kullakangide maksumused võivad olla erinevad. Pacmani jälitab pidevalt koll ehk viirus, kellega ei tohi kokku puutuda, sest see sündmus lõpetab mängu. Normaalselt mäng lõpeb, kui kõik kullakangid on kätte saadud. Mäng võib lõppeda ka siis, kui on ületatud etteantud aeg. Seinad Pacmani läbi ei lase, kolli aga lasevad. Mängul võiks olla mitu taset. Tase määratakse kolli liikumise kiiruse järgi: mida suurem kiirus, seda tõenäolisem on, et ta tabab Pacmani. Teeme kaks varianti: mängija liigutab Pacmani nooleklahvidega ja Pacman liigub ise, mängija saab muuta nooleklahvidega liikumise suunda.
Tegutsev prototüüp esimese variandi jaoks on toodud alloleval apletil. Käivitamiseks klahv Tühik. Teise variandi apleti saab käivitada siit Pacman_V2.

Kasutajaliides

Apleti kuval on näha ka kasutajaliidese põhielemendid. Olulisteks liidese elementideks on praegu ka spraidid: Pacman - on punane ringike, koll - mingi putuka (kuklase) sarnane olevus, kullakangid - kollased ristkülikud. Kõige märgatavamaks liidese osaks on labürint, mis on realiseeritud ka spraidina. Selle asemel võiks kasutada ka taustapilti. Spraiti teade kasutatakse ka mängu tulemuste kuvamiseks (vt allpool)
Muutujate monitoride abil näidetakse alles jäänud aega, alles olevaid kullakange, kogutud kulla maksumuse summat. Muutuja tase liuguri abil saab kasutaja valida mängu tase.
Kasutajaliidese elementideks on ka nooleklahvid, millega juhitakse Pacmani liikumist, ning tühiku klahv, millega käivitatakse mäng.

Spraidid

   Labürint. Antud realisatsioonist kujutab see nn passiivset spraiti: tal puuduvad skriptid. Labürindi tegemiseks võib kasutada joonistamisredaktorit, kui just käepärast ei ole sobivat taustapilti.  Labürint peaks olema nö suletud süsteem eiti, kui Pacman liigub ise. Kõigepealt võiks joonestada lavasuuruse, paksude seintega täitmata ristküliku ning siis lisada seinu ja muid takistusi.
Labürindi tegemisel peab arvestama ka vajadusega takistada Pacmani läbiminekut seintest. Selleks peab kõige pealt tegema kindlaks, kas Pacman puudutab labürinti või mitte. Kontrollimiseks võib kasutada labürindi nime või värvi. Mõnevõrra paindlikum on värvi kasutamine. Nagu öeldud, labürindi võib teha ka taustapildina. Sellisel juhul saab kasutada kontrolliks ainult värve.
   Pacman. Liigub mööda labürinti ja korjab kullakange. Seintest läbiminek peab olema välistatud! Kui Pacman puudutab kulda, peidetakse see ja kulla maksumus lisatakse summale.
Vaatleme eraldi kahte varianti: spraiti pööratakse ja liigutatakse nooleklahvidega ning sprait liigub ise (nooleklahve kasutatakse ainult suuna muutmiseks).
Spraidi võib valida olemasolevate seest või teha jonistamisredaktoriga (soovitav). Võiks näiteks teha kaks kostüümi: väikene täisring ja kolnukse väljalõikega ring. Kostüümide vahetamisel saaks imiteerida suu avamist ja sulgemist.
   Kullakangid. Neid võib olla suvaline hulk ja need võivad asuda suvalistes kohtades labürindis. Kui Pacman puudutab kullda, see peidetakse ja tema maksumus lisatakse kogutud summale.
   Koll. Jälitab Pacmani ja kui tabab selle, siis mäng lõppeb. Võib võtta suvalise spraidi olemasolevast spraitide kogumist. Muide kolle võiks olla mitu, et teha mäng keerulisemaks. Praegu piirdume siiski ühega.
   Teade. Tekstid teadetega mängu tulemuste kohta. Iga teade kujutab endast kostüümi, mis valitakse sõltuvalt tulemusest

Muutujad

  alles – alles olevate kullakangide arv, algväärtus max_kuld, muudavad kulla skriptid
  Summa – kogutud kulla väärtuse jooksev summa, algväärtus 0, muudavad kulla skriptid
  aeg – mängu lõpuni jääv: max_aegtaimer, algväärtus max_aeg, muudab lava skript
  tase – mängu tase: 1, 2 või 3, saab valida mängija liuguri abil
  _hk – kolli liikumise samm, määrab kolli skript, sõltuvalt tasemest: 1; 2; 3
  _hp – Pacmani liikumise samm, määrab Pacmani skript
  max_aeg – mängu maksimaalne aeg, määratakse tegemise ajal, praegu 90 sekundit
  max_kuld – kullakangide arv, määratakse tegemise ajal, praegu 10

Muutujate alles, Summa ja aeg väärtused muutuvad programmi täitmise ajal, sõltuvalt mängu käigust. Muutuja tase väärtuse määrab kasutaja enne programmi käivitamist liuguri abil. Väärtuse muutmine programmi täitmise ajal ei mõju jooksvale tasemele. Muutuja _hk väärtuse võtab programm täitmise alguses, arvestades muutuja tase väärtust.
Muutujate _hp, max_aeg ja max_kuld on fikseeritud programmi tegemise ajal. Taoline suuruste kasutamine muutujatena on otstarbekas siis, kui suurusele viidetakse korduvalt või arvestatakse väärtuse muutumisega programmi edasiarendamisel.

Seosed spraitide vahel ning tegevuste ja skriptide jaotamine objektide vahel

Kui kasutusel on mitu omavahel seotud objekti (spraiti), siis tavaliselt tekkib vajadus enne skriptide koostamist, määrata milliseid objekti omadusi kasutatakse ja milliseid tegevusi täidavad erinevad objektid. Ka ühe objekti tegevused võivad olla jagatud mitme skripti vahel. Samuti tavaliselt vajab eelnevat selgitamist kuidas toimub infortmatsiooni vahetus (andmed, teatet jmt) objektide ja skriptide vahel.
Tegevuste jaotamisel spraitide vahel mängivad olulist rolli võimalikud seosed nende vahel. Praegu on peamisteks seosteks võimalikud kokkupuuted objektide vahel. Taolise küsimusega me puutusime kokku eelmises näites, käsitles papagoi ja palli puudet. Praegu on analoogilisi probleeme mitu.
Pacmani seos labürindiga. Väga üldiselt võib küsida nii: kas seinad ei lase läbi Pacmani või Pacman ei lähe seinast läbi? Praktiliselt on lihtsam realiseerida teist variani. Kui toimub Pacman ja seina kokkupuude: Pacman kas põrkab tagasi või lihtsalt ei liigu edasi. Igal juhul on vaja kontrollida puudet. Ja kohe tekkib küsimus: kas Pacman kotrollib, et on puude labürindiga või labürint kontrollib, kas teda puudutab Pacman. Kuna puute korral peab tegutsema Pacman, siis on parem panna kontroll ja vastav reaktsioon Pacmanile. Seda enam, et labürint peab tegema kontrolli pidevalt, Pacman aga siis kui liigub (teeb sammu).
Puute kontrollimisel saab Scratch'is kasutada kolme erinevat käsku (plokki):
pp
Esimesel juhul kasutatakse teise spraidi nime, teisel juhul - teise spraidi või tausta värvi, kolmanda juhul - kahte värvi: antud spraidi ja teise spraidi või tausta värv. Värvide puhul võib olla ainult spraidi mingi osa värv. Tausta puhul on praktiliselt alati tegemist osaga.
Pacmani seos kolliga. Siin küsimus on järgmine: kas Pacman kontrollib, et ta puudutab kolli või vastupidi? Mõnevõrra parem on teine võimalus: sündmust kontrollib koll. Põhimõteliselt on kolli ainsaks eesmärgiks Pacmani tabamine, peale tabamist toimuvad mõned tegevused kolliga: mõõtmete suurendamine, mingi teksti kuvamine jm. NB! Kolle võib olla ka mitu. Nende käitumine võib olla analoogiline ja igaüks kontrollib ise puudet Pacmaniga.
Kuna peale kolli puudutust peab tegema Pacmani nähtamatuks (peitma), peab koll saatma vastava teate, näiteks Käes!. Selle teate saamisel Pacman peidab enda. NB! Üks sprait (praegu koll) ei saa määrata tegevusi teise spraidiga (siin Pacman). Praegu võtab selle teate vastu ka sprait teade, kuvades vastava teate.
Pacmani seos kullakandidega. Analoogiline küsimus eelmistega. Kus toimub puute kontroll? Arvestades, et kullakange võib suvaline hulk, on parem, kui kontrolli teevad kulla skriptid igaüks eraldi. Kui kontrolli teeks Pacman, peaks selle skriptis olema nii palju kui-plokke, kui palju on kullakange. Koos kontrolliga toimub ka puute korral, järelejäänud kullakngide arvu vähendamine ja maksumuse summa suurendamine. Kullakangi maksumust aga teab see ise.
Info järeljäänud kullakangide kohta on kättesaadav ka Pacmanile muutuja alles väärtuse kaudu, kes kasutab seda töö lõpetamise kontrolliks.

Programmides tuleb ette ka selliseid skripte, mis ei ole otseselt seotud konkreetse spraidiga. Taolised skriptid võib põhimõtteliselt paigutada suvalise spraidi skriptide piirkonda. Sageli sellised skriptid pannakse lava skriptide piirkonda. Ka vaadeldavas rakenduses on paar skripti seotud lavaga.

Lava skriptid

Projekti peaskriptps


Sellest väikesest skriptist algab programmi täitmine. Taolisi skripte sageli nimetatakse peaskriptideks. Skript omistab väärtused kahele fikseeritud muutujale ja, võiks öelda, käivitab Pacmani, kolli, kulla põhiskriptid ja anda ajakontrolli skripti, saates teate Start.

Aja kontrolli skript

ld

Skript realiseerib ühe kolmest võimalusest programmi töö lõpetamiseks. See kuvab ja kontrollib aega, mis on jäänud mängu lõpuni.
Muutuja aeg algväärtuseks võetakse max_aeg ja käivitatakse taimer. Eelkontrolliga korduse plokk kontrollib tingimust aeg<0 ja seni, kuni see ei ole tõene, kuvab mängu lõpuni jäänud aega. Kui tingimus saab tõeseks, kordamised lõpetatakse, väljastatakse teade Aeg läbi ja lõpetatakse programmi töö. Teate võtab vastu sprait teated, mis kuvab vastava teate.

Pacmani skriptid. Variant 1 – liigutamine nooleklahvidega

Stardiskript viib Pacmani algpunkti: labürindi ülemine vasakpoolne nurk. Toodud koordinaate võib muuta. Käsk näita teeb spraidi nähtavaks. See on vajalik siis, kui eelmine mäng lõppes sellega, et koll tabas Pacmani või ületati mängu aeg.
Käsk võta _hp = 10, määrab Pacmani liikumise sammu ühe nooleklahvile vajutuse korral. Ka seda arvu võib soovi korral muuta. Järgmised käsud võta omistavad algväärtused muutujale Summa ja alles. Seejärel skript jääb käsu oota kuni alles = 0 toimel jääb ooteseisu. Juhul kui toodud tingimus saab tõeseks (korjatakse kõik kullakangid), peatatakse kogu programmi töö, lastes enne käsuga teavita Tehtud kuvada spraidil teated vastava teate.

pac

Pacmani liigutamiseks on neli sarnast nooleklahvi skripti ja nendega seotud ühine skript Tee_samm. Viimane on tehtud eraldi skriptina, sest ei ole erilist mõtted panna nelja skripti lõppu täpselt ühesugune käsugrupp. See veelkord demontreerib nö alamprotseduuride tehnika kasutamise põhimõtteid, väga tüüpilist programmeerimises.
Skript on tüüpnäiteks spridi põrke realiseerimiseks, kui sprait puudutab antud värvi: siin labürindi seina värv. Värvi saab käsu loomisel valida pipeti abil, kas teiselt spraidilt või taustalt. Põrke realiseerimiseks muudetakse spraidi suund käsuga pööra 180 kraadi vastupidiseks ja tehakse samm uues suunas.

Kolli skriptid

Kõigepealt viiakse sprait käsuga mine alguspunkti (lava ja ka labürindi alumine parempoolne nurk) ning võetakse selle suuruseks 20% juhul, kui seda muudeti Pacmani tabamisel. Käsuga teavita Vali_samm käivitatakse alamskript, mis valib kolli liikumise sammu _hk, sõltuvalt mängu tasemest

Kolli põhiskriptps1

Põhiosa skriptist kujutab endast eelontrolliga kordus, mis põhimõteliselt peaks töötama seni, kuni koll puudutab Pacmani. Kui aga Pacman jõub enne saada kätte kogu kulla või ületatakse etteantud aeg, katkestatakse kogu programmi töö ning loomulikult antud skript ja kordus.
Korduse sees on põhikäskudeks:  
   osuta Pacman‑le ja liigu _hk sammu,
mille toimel koll liigub pidevalt Pacmani poole.
Kui koll tõepoolest tabab Pacmani, kordus katkestatakse ja täitmisjärg läheb plokile korda järgnevale plokile võta suuruseks 60 %. plokile. See suurendab kolli suurust. Seejärel väljastatakse tede Käes, kuvatakse tekst Käes! ja lõpetatakse kogu programmi töö.

dd

Kolli sammu valimise skript on tehtud eraldi selleks, et vähendada põhisktipti pikkust ja demonstreerida veelkord alamskriptide kasutamist. Taoline kindla otstarbega osade realiseerimine eraldi üksustena on üsna tüüpiline programmerimises. See võimaldab teha selgemaks programmi struktuuri ning käsitleda ja muuta osi eraldi.
Antud juhul üks kahendvaliku kui‑plokk, sisaldab teises (muidu) harus teist kahendvaliku plokki.

Kulla skript

Kõikide kulla spraitide skriptid on praktiliselt ühesugused. Erinevused võivad olla lisatavates maksumustes. Skript tehakse esimese spraidi jaoks ja edasi spraiti paljun-dakse ning, kui vaja, muudetakse maksumust.
Skript teeb spraidi nähtavaks ning jääb ooteseisundisse kuni spraiti puudutab Pacman. Kui see juhtub, väähendatatakse muutuja alles väärtust, lisatakse maksumus summale ja peidetakse sprait.

Pacmani iseliikumine

pi

Siin nooleklahvide abil muudetakse ainult spraidi suunda. Põhiskrippt erineb esimese variandi omast selle poolest, et käsu oota kuni alles=0, kasutatakse nüüd sama tingimusega plokki korda, mis liigutab antud sammuga spraiti, kui see ei puuduta seina. Kusjuures kasutatakse kahe erineva värvi puudet: üks on seina värv, teine mingi muu, spraidi enda värvist erinev. Näiteks spraidil võiks ühel küljel olla väike must täpike nagu näidatud pildil. NB! Samm ei tohiks olla eriti suur, muidu sprait muutub raskesti juhitavaks.

Musta värviga täpp peab olema spraidi sellel küljel, mis on pöööratud liikumise suunas

Kõik muud skriptid on samad nagu eelmises variandis.

Sprait teated

Näide "Ristkülik"

Ülesande püstitus ja realisatsiooni põhimõtted

Antud näide demonstreerib lihtsamate arvutuste tegemist ja joonistamisvahendite kasutamist.
Koostame rakenduse, mis leiab ristküliku külgede a ja b järgi, selle diagonaali (d), pindala (S) ja ümbermõõdu (P) suhte (S/P) ning joonestab ka vastava skeemi.
d:

Mingeid nö eriomadustega spraite siin vaja ei ole. Arvutustega seotud skriptid võib siduda lavaga. Joonestamiseks kasutame joonistamisredaktoriga tehtud ringikest (vt allpool).

Andmed

Nagu taolistes ülesannetes on tüüpiline, võib andmed jagada kolme rühma:
  algandmed: a ja b, tulemid: d ja suhe, vaheandmed: S ja P .
Kasutajal peab olema võimalus muuta algandmete (a ja b) väärtusi. Seega peab need programmis esitama muutujatena. Tulevalt asja olemusest, peavad ka tulemid ja vaheandmed olema programmis muutujateks.
Algandmete väärtuste muutmiseks võib kasutada muutujate monitoride liugureid ja väärtuste sisestamist klaviatuurilt käsu küsi abil. Liugurite abil saab sisestada ainult täisarve. Käsu küsi korral selliseid kitsendusi ei ole. Siin kasutame mõlemat varianti
Teeme eraldi skriptid arvutuste, joonestamise ja andmete lugemiseks klaviatuurilt.

Skript Arvuta

Üldiselt ei ole Scratch ettenähtud väga keeruliste ja mahukate arvutuste tegemiseks. Avaldiste loomiseks kasutatakse aritmeetikatehete ja matematikafunktsioonide plokke.

d
f

aritmeetikatehete plokid
avaldiste näited

d

funktsiooniplokkide näited

Avaldiste esitamise üheks iseloomulikuks eripäraseks Scratch’is on see, et siin puuduvad sulud, mida laialdaselt kasutakse matemaatikas ja tekstipõhistes programmeerimiskeeltes tehete järjekorra määramiseks.
Plokide pesadesse võib paigutada konstante muutujaid ja avaldisi. Igat kahest elemendist koonevat tehteplokki võib vaadeldada, kui sulgudes olevat avaldise osa.
Funktsioonide argumendid võib esitada konstantide, muutujate ja avaldiste abil. Vajaliku funktsiooni saab valida avanevast menüüst.

g

Antud skriptis eeldatakse, et algandmete (a ja b) väärtused on juba sisestatud: liugurite või käsu küsi abil. Tulemid  automaatselt kuvatakse vastavates monitorides. Vahetulemite kuvamise saab blokeerida, kui vastavate muutujate nimede ees lülitada välja märkeruut.

Antud skripti kõik plokid (käsud) kujutavad endast nö klassikalisi omistamistamiskäske (omistamistamislauseid). Taolised laused esitakse tekstipõhistes programmeerimiskeeltes kujul:
   muutuja = avaldis,
    kus muutuja on muutuja nimi, avaldis – väärtuse leidmise eeskiri.
Näiteks enamikus keeltes vastav programmi fragment näeks välja taoliselt:

 

   S = a * b
   P = 2 * (a + b)
   d = Sqrt(a^2 + b^2)
   suhe = S / P

 

Skript Loe_alg ja peaskript

g

h

Skript Loe_alg loeb klaviatuurilt ristküliku laiuse ja kõrguse väärtused ning omistab need muutujatele a ja b.

d

Juhul, kui andmete sisestamiseks (muutmiseks), kasutatakse liugureid, võiks rakenduse käivitamiseks kasutada näiteks kõrvalolevat skripti.

Skript Joonesta

Scratch’is on vahendid lihtsate pildikeste ja skeemide loomiseks. Tegemist on nn "kipkonnagraafika", mille erinevaid variante kautatakse näiteks mitmetes Basic’u ja Logo versioonides.
Jooniste tegemiseks kasutakse grupis Pliiats olevaid spetsiaalseid käske koos grupi Liikumine käskudega. Pliiatsit võib kasutada suvalise spraidiga. Kui on ettenähtud, selle keskpunkt jätab lavale antud paksusega ja värviga joone.
Joonestamisel peab arvestama lava koordinaatsüsteemiga. Tuletame meelde, et nullpunkt asub lava keskel, x‑de väärtused on vahemikus -240 kuni 240 ja y‑d on vahemikus -180 kuni 180. Tegemist on määramata mõõtmetega ühikutega: pikselitega.


Praegu on meie eesmärgiks teha umbes taoline skeem. Selleks, et reguleerida joonise suurust, on otstarbekas võtta kasutusele abimuutuja, mille väärtus näitab pikselite sarvu pikkuse ühkule. Olgu abimuutuja nimeks m ja muutuja väärtust saab muuta slaideriga. Kasutaja saab valida m jaoks sobiva väärtuse, et pilt mahuks lavale ära.

f

Käsk kustuta eemaldab kõik pliatsiga tehtud jooned lavalt enne uue joonise tegemist. Käskude pliiats üleval ja pliiats all saab määrata, kas joonestamine toimub või mitte.
Pliiats viiakse keskkohta (0, 0), määratakse pliiatsi suurus (joone paksus) ja värv ning alustatakse joone tegemist (pliiats all).
Alguses pliiats läheb ülesse, punkti (0, m*b), kus m arvestab pikselite arvu. Edasi samal põhimõttel liigutakse paremale, siis alla ja tagasi punkti (0, 0). Siin võetakse uus värv ja liigutakse  ülemisse parempoolsesse tippu: tõmmatakse diagonaal.

Näide "Test"

Antud näites tutvume loendite (list) kasutamisega Scratch'is
Skratch'i loendid oma põhiolemuselt vastavad traditsiooniliste programmeerimiskeelte ühemõõtmelistele massiividele. Ühemõõtmeline massiiv programmeerimises kujutab järjestatud (nummerdatud) elementide (lahtrite) kogumit. Igale elemendile eraldatakse arvuti mälus üks pesa, kuhu saab salvestada korraga ühe väärtuse. Pesad võivad olla ka tühjad. Massiiv (kogumik) tähistatakse ühe nimega, viitamiseks elementidele kasutatakse nime koos indeksiga (järjenumbriga).
Scratch'is kasutatakse massiivide loomiseks grupi Muutujad korraldust Tee loend. Korraldus küsib loodava loendi (massiivi) ja loeb tühja loendi. Loendi monitor kuvatakse laval. Elemente ja väärtusi saab loendisse lisada nö "käsitsi": rakenduse loomise ajal ja vastavate käskude (lisa ja sisesta) abil programmi täitmise ajal. Viitamiseks elementidele kasutatakse elementi
v, kus loend on loendi nimi v, indeks - elemendi järjenumber, mille võib esitada konstandi kon, muutuja inndvõi avaldise ind_avaldisabil.

Ülesande püstitus

Koostada rakendus, mis võimaldab teha teste erinevate teemade kohta. Rakendus peab võimaldama kuvada järjest küsimusi, sisestada vastusi ja hinnata neid, andes õige vastuse korral punkte. Rakendus võiks anda ka üldhinnangu (hinde) tulemustele ning kontrollida aega. Vaadake alloleval apletil näidet. Näite Skratch'i projekti saab alla laadida lingilt Test_1.sb.

Loendit ja muutujad

Võtame kasutusele kaks loendit (massiivi): KL -küsimuste loend, VL - vastuste loend. Esimese loendi elementidesse sisestatakse küsimused, teise loendi samade numbritega elementidesse - õiged vastused.

loend
Elemente saab lisada all vasakus nurgas oleva ristikese abil, võib kasutada ka plokki lisa. Elemendi väärtuse muutmiseks, aktiveerida klõpsatusega element ja tippida uus väärtus. Eemaldamiseks aktiveerida element ja klõpsata elemendi sees olevat ristikest. Elemendi lisamiseks vahele võib kasutada plokki sisesta.

Võiks luua järgmised muutujad
  n - elementide arv loendis
  k - elemendi jooksev järjenumber (indeks)
  punkte - punktide jooksev väärtus
  aeg - jooksev aeg (kui kuvatakse ja kontrollitakse aega)
  hinne - testi eest saadud hinne (kui toimub hindamine)

Põhiskript

Püstitatud põhieesmärgi saavutamiseks piisab alltoodud skriptist. Tegemist on suhteliselt universaalse lahendusega. See ei ole kuidagi seotud testi teemaga: loendites olevaid küsimusi ja vastuseid saab vabalt muuta. Samuti ei ole oluline küsimuste arv: korduse juhtimiseks vajaliku arvu (n) teeb skript ise kindlaks.

ts

 

muutuja n väärtuseks loendi KL pikkuseks
muutuja punkte algväärtuseks 0
muutuja k (indeksi) algväärtuseks 1
korrata n korda
  kuvatakse KL-i element nr k

  kui vastus võrdub VL elemendiga nr k
      punktide arvu suurendatakse 1 võrra
  vastupidisel juhul
      kuvatakse tekst
  suurendatakse indeksi k väärtust 1 võrra
tagasi korduse algusesse

Hinnangu skript

gg dd

 

oo

 


 

 

 

 

 


 


Plokide kirjeldused

 

Informatsiooni plokkide kohta saab ka dokumendist Scratch'i abiinfo ekraanikuvad.

Grupp Liikumine - Motion     Abiinfo ekraanikuvad

 Plokid  Selgitused
 pli1 pling  Viib spraidi edasi või tagasi (-)
 poor1 torn1  Pöörab spraiti päripäeva (- vastupäeva)
 poor2 torn2  Pöörab spraiti vastupäeva (- päripäeva)
 osut1 point1  Suunab (pöörab) spraiti etteantud suunas (0 - ülesse,  90-paremale, 180-alla, -90-vasakule, X-suvaline nurk)
 osut2 point2  Suunab spraidi hiire kursorile või teisele spraidile
 mine1 goto1  Viib spraidi punkti koordinaatidega x-y
 mine2 goto2  Viib spraidi hiire kursori või teise spraidi asukohta
 liigu
 glide
 Viib spraidi sujuvalt antud ajaga antud punkti (x-y)
 muudax changeX  Muudab spraidi x väärtust antud arvu võrra
 panex setX  Võtab spraidi x koordinaadi väärtuseks antud arvu
 muuday changeY  Muudab spraidi y väärtust antud arvu võrra
 paneY setY  Võtab spraidi y koordinaadi väärtuseks antud arvu
 kuiaar ifbounce  Muudab spraidi suuna vastupidiseks, kui see puudutab serva
 xkoht Xpos  Viitab spraidi x koordinaadile (-240 kuni 240)
 ykoht Ypos  Viitab spraidi y koordinaadile (-180 kuni 180)
 suund direct  Viitab spraidi suunale (0 - ülesse,  90-paremale, 180-alla, -90-vasakule, X-suvaline nurk)

Alamgrupp Mootorid - Motors     Abiinfo ekraanikuvad

 Plokid  Selgitused
 mot_sek
 mot_for
 Lülitab mootori sisse etteantud ajaks
 mot_sis mot_on  Lülitab mootori sisse
 mot_val mot_off  Lülitab mootori välja
 mot_voim
 mot_pow
 Määrab mootori võimsuse (vahemikus 0 kuni 100) ja lülitab selle sisse
 mot_por
 mot_dir
 Määrab mootori pöörlemise suuna (seda viisi - päripäeva, toda viisi - vastupäeva, vastupidiseks - muudab suuna vastupidiseks)

Grupp Välimus - Looks    Abiinfo ekraanikuvad

 Plokid  Selgitused
 votakost
switchcost
 Muudub spraidi välimust, lülitudes etteantud kostüümile
 jarg nextCost  Võtab spraidile järgmise kostüümi. Kui jõutakse loetelu lõppu, minnakse esimese kostüümi juurde
 kostNr costume_#  Viitab spraidi etteantud numbriga kostüümile
 
 switcBack
 Muudab Lava välimust, lülitudes etteantud taustale
 jargtaust nextBack  Võtab Lavale järgmise tausta. Kui jõutakse loetelu lõppu, minnakse esimese tausta juurde
 taustNr background_#  Viitab Lava etteantud numbriga taustale
 utle_sek
 say_sek
 Kuvab spraidi juures kõneballooni (tekstiboksi) antud tekstiga antud aja jooksul
 utle say  Kuvab spraidi juures kõneballooni antud tekstiga. Ballooni saab eemaldada, käivitades sama ploki ilma tekstita
 mot_sek
 think_sek
 Kuvab spraidi juures mõtlemist imiteeriva kõneballooni (tekstiboksi) antud tekstiga antud aja jooksul
 motle think  Kuvab spraidi juures mõtlemist imiteeriva kõneballooni
 muuda_ef
 chan_ef
 Muudab spraidi graafilist efekti (värv, keere, heledus jm) antud väärtuse võrra. Efekti saab valida mernüüst
 pane_ef
 set_ef
 Võtab spraidi graafilise efekti jaoks antud väärtuse. Enamiku efektide väärtused on vahemikus -100 kuni 100
 kustu_ef
 clear_ef
 Eemaldab spraidi kõik graafilised efektid
 muuda_suur
 ch_size
 Muudab spraidi suurust antud väärtuse (%) võrra
 vota_suur
 set_size
 Võtab spraidi suuruseks antud protsendi originaalist
 suurus size  Näitab spraidi suurust protsentides originaalist
 naita show  Muudab spraidi nähtavaks
 peida hide  Muudab spraidi nähtamatuks. Kui sprait on nähtamatu, ei tuvasta teised spraidid seda plokiga puudutab?
 esip front  Toob spraidi esiplaanile
 tagasi back  Viib spraidi tahapoole antud kihtide arvu võrra

Grupp Heli - Sound    Abiinfo ekraanikuvad

 Plokid  Selgitused
 nau play  Alustab menüüst valitud heli mängimist ja kohe läheb järgmise ploki juurde, samal ajal heli ikka jätkub
 kui
 play1
 Mängib heli ära ja läheb järgmise ploki juurde
 peata st  Peatab kõikide helide mängimise
 trumm
 dr
 Mängib menüüst valitud trummi heli antud löökide arvu
 paus rest  Teeb pausi (ei mängi midagi) etteantud arvu lööke
 tug
 pl
 Mängib muusika noodi (suurem arv suurema heli kõrguse jaoks) antud löökide arvu
 inst
 
  Määrab muusikariista tüübi, mida sprait kasutab
plökkides mängi nooti. (Igal spraidil on oma instrument)
 mt
 cv
  Muudab spraidi helitugevust antud suuruse võrra
 vt
 sv
 Võtab spraidi helitugevuseks antud
suuruse
 ht  vol  Näitab spraidi helitugevuse väärtust
 mt
 ct
 Muudab spraidi mängutempot antud suuruse võrra
 vt
 st
 Võtab spraidi tempoks antud väärtuse (lööke minutis)
 tempo te  Näitab spraidi mängutempot (lööke minutis)

Grupp Pliiats - Pen    Abiinfo ekraanikuvad

 Plokid  Selgitused
 kustu clear
 Kustutab pliiatsi joonised ja spraitide jäljendi Laval
 all pd  Laseb pliiatsi alla, liikumisel see joonistab
 ulal pu  Tõstab pliiatsi ülesse, liikumisel see ei joonista
 vava
 sc
 Muudab pliiatsi värvi valikuga paletist pipeti abil
 mv
 cf
 Muudab pliiatsi värvi antud väärtuse võrra
 vv
 sc
 Võtab pliiatsi värviks antud väärtuse. (väärtus 0 on vikkerkaare punane ots, väärtus 100 - sinine ots)
 mv
 ps
 Muudab pliiatsi varjundit antud väärtuse võrra
 vv
 ss
 Võtab pliiatsi varjundiks antud väärtuse. (väärtus 0 on
väga tume, väärtus 100 - väga hele)
 ms
 cs
 Muudab pliiatsi suurust antud väärtuse võrra
 vs
 ps
 Võtab pliiatsi suuruseks antud väärtuse
 jalg st  Jätab spraidi pildi jäljendi Lavale

Grupp Juhtimine - Control    Abiinfo ekraanikuvad

 Plokid  Selgitused
 RL
 rf
 Käivitab alloleva skripti, kui klõpsatakse rohelist lippu
 klahv
 kp
 Käivitab alloleva skripti, kui vajutatakse antud klahvi
 spr
 csp
 Käivitab alloleva skripti, kui klõpsatakse antud spraiti
 oota wait
 Peatab skripti täitmise, ootab antud aja ja jätkab täitmist
 ootakuni wu  Ootab kuni tingimus saab tõeseks ning seejärel käivitab allpool olevad plokid
 lop forever  Täidab seesolevaid plokke lõputult
 lopkui fi  Pidevalt kontrollib kas tingimus on tõene, kui jah, täidab seesolevad plokid
 k10 rep10  Täidab seesolevaid plokke näidatud arvu kordi
 kordakuni ra  Täidab seesolevaid plokke seni, kuni tingimus saab tõeseks
 kui if  Kui tingimus on tõene, täidab seesolevad plokid
 kuimui ifelse  Kui tingimus on tõene, täidab kui-osas olevad plokid, kui ei ole, täidab muidu-osas olevad plokid
 teavita broad  Saadab teate ja käivitab skriptid, milledel on olemas vastuvõtja antud teatele ning jätkab kohe täitmist
 teaota bw  Saadab teate ja käivitab skriptid, milledel on olemas vastuvõtja antud teatele, ootab nende täimise lõppu ja jätkab järgmisest plokist
 teade rec  Käivitab alloleva skripti, kui saabub antud teade
 peas ss  Lõpetab skripti täitmise
 peak sa  Lõpetab kõikide spraitide kõikide skriptide täitmise

Grupp Andurid    Abiinfo ekraanikuvad

 Plokid  Selgitused
 puudutab
 touch
 Tagastab väärtuse tõene, kui sprait puudutab antud spraiti, Lava serva või hiire kursorit. Objekt valitakse menüüst
 puud_varv
 touch_color
 Tagastab väärtuse tõene, kui sprait puudutab antud värvi. Klõpsake värvi ava plokis ja ilmuva pipetiga klõpsake vajaliku värvi mingil spraidill või Laval
 varv_varv 
col_col
 Tagastab väärtuse tõene, kui esimene värv (spraidi sees) puudutab teist värvi (teisel spraidil või Laval). Klõpsake värvi ava plokis ja ilmuva pipetiga klõpsake vajaliku värvi mingil spraidill või Laval
 
 kysi
 ask
 Peatab skripti täitmise, kuvab antud teksti kõnebaloonis spraidi juures ning tekstivälja Lava alumises ääres. Kui kasutaja tipib vastuse ning vajutab klahvi Enter või klõpsab märkeruutu, võetakse sisend ploki vastus väärtuseks ja skripti töö jätkub.
 vastus answer  Sisaldab viimasena täidetud ploki küsi sisendit. On ühine kõikide spraitide jaoks (nagu globaalne muutuja)
 hiireX mouseX  Viitab hiire kursori x-koordinaadile
 hiireY mouseY  Viitab hiire kursori y-koordinaadile
 hiir_all mouse_down  Tagastab väärtuse tõene, kui hiire vasak nupp on all
 klahv
 key
 Tagastab väärtuse tõene, kui on vajutatud antud klahvile
 kaugus
 dist
 Tagastab kauguse antud spraidist
 taimer reset  Paneb taimeri algseisu (nulli)
 timer timer1  Tagastab taimeri jooksva aja sekundites alates algseisu hetkest
 oma
 prop
 Tagastab näidatud spraidi (valida menüüst) omaduse: asukoht, suurus, suund, kostüüm, lokaalne muutuja (valida menüüst)
 heli1 loud1  Tagastab mikrofonilt tuleva heli tugevuse (1 kuni 100)
 heli2 loud2  Tagastab väärtuse tõene, kui heli on tugevam 30-st

 liug
 slai

 Tagastab antud sensori väärtuse. Võib olla PicoBoard seade http://www.playfulinvention.com/picoboard.html või
LEGO® WeDo™ http://www.legoeducation.com
 sensn
 sensb
 Tagastab väärtuse tõene, kui antud sensor on sees. Arvutiga peab olema ühendatud PicoBoard seade. http://www.playfulinvention.com/picoboard.html

Grupp Tehted - Operators     Abiinfo ekraanikuvad

 Plokid  Selgitused
 liida  Liidab kaks arvu
 lahu  Lahutab esimesest arvust teise
 kor   Korrutab kaks arvu
 jaga  Jagab esimesese arvu teisega
 juhu
 rand
 Tagastab juhusliku arvu antud vahemikus
 less  Tagastab tõene, kui esimene väärtus on väiksem teisest
 equal  Tagastab tõene, kui väärtused on võrdsed
 gre  Tagastab tõene, kui esimene väärtus on suurem teisest
 jaa and  Tagastab tõene, kui tingimused on tõesed
 voi or  Tagastab tõene, kui vähemalt üks tingimustest on tõene
 mitte not  Tagastab tõene, kui tingimus väär, vastupidisel juhul väär
 yhenda join
 Ühendab kaks teksti (stringi). Võivad olla avaldised
 pikk len  Tagastab antud teksti pikkuse. Tekst võib olla avaldis
 eralda letter  Tagastab antud numbriga tähe (märgi). Võib olla avaldis
 funmath  Tagastab antud funktsiooniga (abs, sqrt, sin, cos, tan, asin, acos, atan, ln, log, e^, 10^) leitud väärtuse
 modmod1  Tagastab jäägi esimese arvu jagamisest teisega
 umar round  Tagastab antud arvule lähima täisarvu

Grupp Muutujad - Variables     Abiinfo ekraanikuvad

 Plokid  Selgitused
 teem
 makeV
 Võimaldab luua muutuja ja anda sellele nime. Esimese muutuja loomisel, ilmuvad ka muutuja plokid. Saab valida, kas muutuja kuulub kõikidele spraitidele (gloobaalne) või ainult ühele (lokaalne)
 kustu
 delV
 Eemaldab muutuja
 mnimi  Muutuja nimi: Viitab muutuja väärtusele. Kui märkeruut on märgistatud, kuvatakse Laval monitor muutuja väärtusega
 vt
 setv
 Omistab muutujale antud väärtuse. Väärtus võib olla määratud konstandi, muutuja või avaldise abil.
Omistuslause teistes programmeerimiskeeltes
  muutuja
= avaldis
 omis2
 change
 Muudab muutuja väärtust antud väärtuse võrra
   muutuja = muutuja + avaldis
 naita
 showV
 Kuvab Laval monitori (näiduki) muutuja väärtusega
 peida
 hideV
 Peidab (teeb nähtamatuks) muutuja monitori Laval
 teeL makeL  Võimaldab luua uue loendi ja anda sellele nime. Esimese loendi loomisel, ilmuvad ka loendi plokid. Saab valida, kas loend kuulub kõikidele spraitidele (gloobaalne) või ainult ühele (lokaalne)
 kustuL delL  Eemaldab loendi
 linimi mulist  Loendi nimi. Viitab tervele loendile. Kui märkeruut on märgistatud, kuvatakse loend Laval
 lis
 addtolist
 Lisab antud liikme loendi lõppu. Liige võib olla arv või suvaline tekst (string). Võib olla esitatud ka avaldise abil
 e1
 e2
 delmyl
 Eemaldab ühe või kõik liikmed loendist. Võib sisestada eemaldava liikme järjenumbri (arv või muutuja) või valida rippmenüüs pakutavatest sobiva variandi. Valik "viimane" (last) eemaldab viimase liikme. Valik "kõik" (all) eemaldab kõik liikmed.
 sis
 insL
 Sisestab (paneb vahele) elemendi antud positsioonile loendis. Võib anda sisestava liikme järjenumbri (arv või muutuja) või valida rippmenüüst sobiva variandi. Valik "viimane" (last) lisab liikme loendi lõppu. Valik "mõni" (any) lisab liikme juhuslikule positsioonile.
 ase
 repl
 Asendab antud numbriga elemendi loendis. Võib anda liikme järjenumbri (arv või muutuja) või valida rippmenüüst sobiva variandi. Valik "viimane" (last) asendab viimase elemendi. Valik "mõni" (any) asendab juhusliku liikme. Loendi pikkus ei muutu
 liel
 item
 Viitab antud numbriga elemendile loendis. Võib anda liikme järjenumbri (arv või muutuja) või valida rippmenüüst sobiva variandi. Valik "mõni" (any) annab juhusliku liikme.
 pikk len  Näitab liikmete arvu loendis
 sisaldab
 cont
 On tõene, kui antud väärtus sisaldub loendis.
NB! Eristatakse suuri ja väikesi tähti

 

Lisad

Scratch'i alla laadimine ja instaleerimine

Scratch'i saab tasuta alla laadida kodusaidilt http://scratch.mit.edu. Windows'i jaoks, paigutamiseks üksikule arvutile, on siin kaks varianti:

  • Instaleerija: ScratchInstaller1.4.exe
    Fail tuleb salvestada ja käivitada. Küsib kausta, pakkudes C:/Program Files. Teeb Windows'i Start-menüüse käivitamise ikooni.
  • Pakitud fail (.zip): WinScratch1.4.zip
    Fail tuleb salvestada ja pakkida lahti suvalisse kausta, võib valida ka C:/Program Files. Käivitamiseks võib teha otsetee ikooni, mis käivitab faili Scratch.exe (vt allpool).

Mõlemal juhul nö töövariant toetab eestikeelset kasutajaliidest, kuid ei võimalda otse kasutada eestikeelset abiinfosüsteemi. Viimase kasutamiseks võib laadida alla leheküljelt http://info.scratch.mit.edu/Languages faili Helpv14_et.zip. See fail tuleb pakkida lahti kausta ...Scrath/Help, saades kausta nimega et (vt allpool). Algselt on selles kaustas ainult kaust en, mis toetab ingliskeelset abiinfosüsteemi.
Ka meie serverilt saab laadida alla faili Helpv14_et.zip, milles on kaust et abiinfo failidega. Üldjuhul see võib olla veidi uuem Scratch'i kodusaidil asuvast materjalist.

Alternatiivina eelpooltoodule võib laadid alla meie serverilt faili WinScratch1.4_et.zip. Kui pakkida see fail lahti, saab sellise süsteemi variandi, mis toetab nii eestikeelset kasutajaliidest kui ka abiinfosüsteemi.

Scratch'i põhikaustad ja -failid

Allpool on toodud Scratch'i kaustade ja failide süsteem. Ülevaate omamine sellest võimaldab paremini hallata ja kasutada Scratch'i. Eeskätt puudutab see eestikeelse abiinfosüsteemi paigutamist ja kasutamist, eesti keeleseadeid, spraitide ja taustade kasutamist ning projektide haldamist.

kaustad

Kõik Scratch'i nö süsteemifailid paigutatakse instaleerimisel kausta Scratch, mis vaikimisi paigutatakse C-ketta kausta Program Files, kuhu tavaliselt paigutakse enamiku süsteemide (programmide) peakaustad. Kuid põhimõteliselt see ei ole oluline ja üldse nö ülalpoolsed kaustad ei oma erilist tähtsust.
Kaustas Scratch on neli alamkausta: Help, locale, Media ja Projects, ning kümmendkond programmifaili: Scratch.exe (käivitusfail), Scratch.ini jt.
Kaustas Help asub alguses üks alamkaust nimega en, mis sisaldab ingliskeelse abiinfosüsteemi faile: graafikafailid laiendusega gif. Siia saab lisada abiinfo kaustu teiste keelte jaoks, kui on olemas vastav tõlge. Eesti keele jaoks on see olemas ja kausta nimeks peab olema et. Kausta saab pakitud kujul laadida alla Scratch'i kodusaidilt (täsemalt vt allpool)
Kaustas locale asuvad failid, mis võimaldavad kasutada Scratch'i kasutajaliidest erinevates keeltes. Failide nimed on kujul keelekood.po, kus keelekood koosneb tüüpiliselt kahest tähest, näiteks: ar.po - araabia, de.po - saksa, es.po - hispaania, et.po - eesti, fi.po - soome, ru.po - vene jne. Kokku on Scratch kasutatav ca 50-es keeles. Kõik keele failid (.po-failid) paigutatakse kausta locale installeerimisel. Inglise keele jaoks .po-faili ei ole, kuna see keel on nö sisseehitatud süsteemi. Soovi korral võib mittevajalikud keelefailid eemaldada. Failid ei ole eriti suured (32 kuni 40 Kbaiti, sõltuvalt keelest) ning kokkuhoid mälumahus ei ole eriti suur, kuid ülearuste failide eemaldamine lihtsustab keele valimist (muutmist), sest pakutakse ainult inglise keelt ja neid keeli, mille jaoks on vastav po-fail. Näiteks kui tahetakse kasutada ainult eesti ja inglise keelt, võib jätta ainult faili et.po.
Kausta Media alamkaustades Backrounds, Costumes ja Sounds on süsteemiga kaasatulevad taustade, kostüümide (spraitide) ja helide failid. Viimased on omakorda jaotatud temaatiliste alamkaustade vahel, näiteks kostüümide jaoks: Animals - loomad, People - inimesed, Things - asjad jm. Faile nendest kaustades pakutakse vaikimisi uute spraitide lisamisel, kostüümide, taustade ja helide importimisel. Soovi korral võib nendesse kaustadesse lisada oma faile ja ka luua kausta Media sees oma kaustu. Spraitide (kostüümide) ja taustade failid on graafikafailid laienditega .gif, .png või .jpg. Helifailid on laienditega .wav või .mp3.
Kaustas Projects on süsteemiga kaasatulevad näidisprojektid, need on jagatud temaatiliste alamkaustade vahel: Animation - animatsioon, Games - mängud jne. Tegemist on Scratch'i failidega, laiendiga .sb.

Scratch'i abiinfo ning muud materjalid

Scratch'i abiinfo ja muud õppematerjalid jagunevad järgmistesse rühmadesse:

  • Operatiivne abiinfo plokide (käskude) kohta
  • Abiinfo leht
  • Materjalid Scratch'i kodusaidil

Abiinfo plokide kohta. Iga ploki (äsu) jaoks on võimalik saada lühiselgituse (spikri), sageli koos näitega, kui kõpsata plokki hiire parempoolse nupuga plokkide paleti või skriptide alas. Kui kaustas Help on olemas eestikeelse abiinfo kaust et ja liidese keeleks on valitud eesti, kuvatakse ka abiinfo ekraanikuvad eesti keeles. Kui liidese keeleks on valitud inglise keel või et kaust puudub, kuvatakse info inglise keeles.
Abiinfo leht kuvatakse, kui valida menüüst Abi käsk Abiinfo leht... (vt allpool). See sisaldab linke järgmistele nö kohalikele materjalidele:

  • Getting Started - lühijuhend algajatele Alustame algusest (pdf-fail).
  • Reference Guide - üksikasjalikum kasutamisjuhend (pdf-fail).
  • Help Screens - abiinfo ekraanikuvad. Samad ekraanikuvad, mida kuvatakse plokkide kohta Scratch'i sees, kuid siin need on kõik koos, plokkide gruppide (Liikumine, Välimus jne) lõikkes. Samad asjad saab ka otse kuvada menüü Abi käsuga Abiinfo ekraanid...

Kui kaustas Help on olemas alamkaust et, kuvatakse ülalnimetatud materjalid eesti keeles.

abi

Materjalid Scratch'i kodusaidil. Abiinfo lehel on ka lingid Scratchi kodusaidi lehekülgedele Tugi ja Keeled (vt ülalpool). Nendelt lehtedelt on kättesaadav kodusaidi peamenüü:

kodu

Scratch'i kodusaidile pääseb ka menüü Jaga käsuga Mine Scratch'i kodulehele... või brauserist aadressiga http://scratch.mit.edu,

Saidilt saab alla laadida Scratch'i viimase versiooni, praegu on selleks versioon 1.4.
Saidil on tohutul hulgal projekte, praegu umbes 500 000(!). Igaüks võib laadida üles oma projekte ja teha need kättesaadavaks teistele. Saidil olevaid projekte võib vabalt laadida alla, proovida ja uurida neid. Võib kasutada projektide komponente oma projekide tegemisel. Projektid on jaotatud erinevatesse rühmadesse ja galeriidesse. Neid saab otsida teemade ja märksõnade järgi. Vt. lehed kodu (home), projektid (projects) ja galeriid (galleries)
Leht tugi (support) sisaldab hulgaliselt linke mitmesugustele abi- ja õppematerjalidele. Eraldi tahaks juhtida tähelepanu viidale Languages, mis viib lehele, kus asuvad erinevates keeltes (sh ka eesti) mitmesugused materjalid. Neid saab uurida nö kohapeal ja ka laadida alla.

Nõuded süsteemile versiooni 1.4 jaoks

Mida on uut Scratch 1,4-s.

Operatsioonisüsteemid:
Windows XP, Windows 2000, Windows Vista
Mac OS X 10.4 või uuem
Kuvar: 800x480 või suurem, 16-bit värvid või enam.
Kõvaketas: Vähemalt 120 megabaiti vaba ruumi Scratch'i instaleerimiseks
Märkus: Scratch sisaldab suurt hulka meedia (kostüümid, taustad, helid) ja näteprojektide faile. Kui sinu arvutil on väga piiratud mälu maht, võid eemaldada osa või kõik need failid (kaustad Media ja Projects, vt ülalpool).
Sisemälu: Enamikul arvutitel on piisavalt sisemälu Scratch'i kasutamiseks. Vanematel arvutitel võib Scratch töötada aeglaselt.
Heli: Et kasutada heli sisendit ja väljundit, peaks olema kõlarid ja mikrofon. Kantavatel arvutitel on need seadmed tavaliselt sisseehitatud.

Vaikimisi võetava seadete muutmine

Vaikimisi võetav sprait
Uues projektis vaikimisi kasutatav sprait on kass Scratch (Kraps). Sellest erineva vaikimisi võetava spraidi kasutamiseks, ekspordi soovitav sprait nimega default.sprite kausta Costumes. Asendamaks ainult vaikimisi võetavat kostüümi, salvesta kausta Costumes pilt nimega default.jpg (või .png või .gif).

Veebis jagamise blokeerimine
Teatud juhtumil võib olla ei soovita, et kasutajad jagaks oma projete veebis. Selleks peab lisama faili Scratch.ini korralduse Share=0. Selle korralduse lisamine, peidab Jaga nupu Scratch'i menüüst.

Vaikimisi võetav keel
Scratch stardib, kasutades arvutis spetsifitseeritud vaikimisi võetavat keelt, kuid seda saab muuta, lisades faili Scratch.ini rea:
Language = [ISO-639-2 code]
Seda määrangut muudetakse iga kord, kui muudetakse keeleseadeid (kui fail Scratch.ini on muudetav). Seega Scratch stardib keelega, mis on viimati kasutuses.
Vaikimisi võetavad projekti märkmed
Vaikimisi on projekti märkmed (selgitused) tühjad. Kui tahetakse varustada kasutajat teatud malliga või soovitustega projekti märkmete kohta, peab valmistama ette tekstifaili nimetusega defaultNotes.txt ja salvestama selle kaustas Scratch. Kui kasutaja ei muuda projekti märkmeid, neid ei salvestada koos projektiga. Selleks, et seda tehtaks, peab muutma vähemalt ühe märgi.

Võrk ja kettasedmete määrangud

Vaikimisi võetava kodukausta määramine
Vaikimisi Scratch eeldab, et kasutaja kodukaust asub kettal C:. Kui aga on tegemist võrgu kasutamisega, asuvad kasutajate kodukaustad võrkukettal. Sellisel juhul peab faili Scratch.ini lisama taolise rea:
Home=J:\MeieKool\Opilased\Klass7\*
See ütleb Scratch'ile, et kasutajate kaustad on kaustas J:\MeieKool\Opilased\Klass7\. Tärn asendatakse kasutaja nimega. Tärni võib jätta ära, kui kõik kasutajad jagavad samat kausta oma projektide jaoks.
Nähtavad kettad
Windows'is võib olla piirangut kasutajatele nähtavate ketaste arvus. Seda saab piirata, lisades faili Scratch.ini taolise rea:
VisibleDrives=J:,M:
Ketta tähisele peab järgnema koolon, eraldajaks on koma. Kui nähtavad Kui ketaste nähtavus on määratud, ei näe kasutajad teisi kettaseadmeid (sh ka USB draive) ja ei saa navigeerida väljaspoole oma koduketast.
Proxy Serverid
Proxy serveri määrangud saab spetsifitseerida Scratch.ini faili järgmise reaga:
ProxyServer=[serveri nimi või IP aadress]
ProxyPort=[pordi number]

Täiendavat inforatsiooni paigutamisest ja seadistamisest võrgus saab aadressil:
http://info.scratch.mit.edu/Network_Installation