teisipäev, 22. november 2016

Muutuja lisamine Scratchis

Selleks, et programm saaks sisestatud andmeid (kasutaja vastus, mõni välja arvutatud tulemus) ka edaspidi kasutada, tuleb kasutusele võtta muutujad.


Muutuja on nimega varustatud koht arvuti mälus, kuhu saab salvestada mingi väärtuse, näiteks arvu, teksti jms. Seda väärtust saab programm edaspidi kasutada, näiteks kuvab kogutud punktid, arvutab uue väärtuse või käivitab järgmise protsessi (kui muutuja väärtus saab võrdseks mingi muu väärtusega).
Muutujate lisamiseks Scratchis tuleb klõpsata nupul "Andmed" ning edasi "Loo muutuja".
Selleks, et muutujat saaks programmis edasi kasutada, tuleb anda talle nimi. Nime andmisel on üldine reegel (kehtib ka teistes programmeerimiskeeltes), et muutuja nimi peab koosnema ühest tähest või tähtede ja numbrite jadast, mis peab algama tähega. Nimes ei tohi olla tähtedest ja numbritest erinevaid märke (tehtemärgid, kirjavahemärgid, sulud jmt), välja arvatud allkriipsud. Nimes ei tohi olla ka tühikuid.

Peale muutuja lisamist tekivad "Andmed" jaotuse alla lisaplokid, mida saab programmi tegemisel kasutada.
Muutujate loomise juures on valikud:
  1. Kõikide spraitide jaoks - muutujat saavad kasutada kõik programmi spraidid ja lava ehk muutuja muutumist saab kasutada kõikide nende skriptides. Selliseid muutujaid nimetatakse globaalseteks muutujateks.
  2. Ainult selle spraidi jaoks - muutujat saab programmis kasutada ainult see sprait, mis oli muutuja loomise hetkel valitud. Teiste spraitide ja lava jaoks ei ole see muutuja kättesaadav. Selliseid muutujaid nimetatakse lokaalseteks muutujateks.
NB! Punktide kokkulugemisel tuleb need enamasti mängu/ programmi mingis osas ka uuesti nullida!


Ülesanne 1.
Jätkame eelmisel tunnil tehtud projekti 

  1. Lisa globaalne muutuja (kõikide spraitide jaoks) nimega punktid
  2. Täienda programmi nii, et kokkupuutel lendava objektiga ("kukkuv õun") saab juurde 1 punkti. 
    • Kokkupuutel antakse punkte seni, kuni spraidid kokkupuutes on, selle vastu aitab, kui näiteks kukkuv sprait peale kokkupuudet peidetakse.
  3. Täienda programmi nii, et kokkupuudel väljaspoole teed jääva alaga läheb iga kord 1 punkt maha.
Ülesanne 2.
Lisa "levelite" vahetuseks kontroll, et edasi saab ainult siis, kui kogutud on piisaval arvul punkte!

teisipäev, 15. november 2016

Joonejärgija mäng (edasiarendus)

Jätkame joonejärgimise mängu täiustamist.

Uue "leveli" loomine ja märguanne "leveli" vahetuseks

Joonejärgimise mängus tuleb uue "leveli" jaoks joonistada uus taust (Lava -> Taustad -> Uue tausta joonistamine ehk pliiatsi märk) või teha olemasolevast taustast koopia (paremhiireklõps taustal -> paljunda) ning seal joont muuta.

Päästiku lisamine "leveli" vahetuseks

Selleks, et joone lõppu jõudes taust vahetuks (kuvatakse järgmine, keerulisem taust), on mitu võimalust
- võib määrata liigutatava spraidi asukoha koordinaadid ja öelda, et kui tegelane jõuab teatud punkti (joone lõpp), siis taust vahetub

- võib joonistada taustale joone lõppu teist värvi riba ja öelda, et kui tegelane puudutab seda värvi, siis taust vahetub


- võib teha uue spraidi (võib olla mingi kujuga, näiteks uks, aga võib olla ka lihtsalt riba) ja öelda, et kui tegelane puudutab seda spraiti, siis taust vahetub

Ülaltoodud võimalused tuleb siis lisada liikumise skripti sisse tingimuslausena (kui ... siis).

Lava kostüümide (taustad) vahetumised peaksid algama teate peale. Kui kostüümid on järjest, siis sobib ka välimuse alt klots "järgmine taust".


Tegelaste näitamine ja peitmine

Mängu käigus tuleb tegelasi ka peita. NB! Kui kasutad välimuse alt "peida" klotsi, siis tuleb kusagile kindlasti lisada ka "näita" (vähemalt mängu algusesse, sest muidu jääb tegelane peale esimest läbimängimist peidetuks).

Lisame mängule ühe tegelase (näiteks õuna), mis ilmub lava ülemisest servast ja langeb alla. Hiljem saame selle tegelase siduda punktide saamisega, aga esialgu paneme ta lihtsalt liikuma.

Õuna ilmumine on siin seotud teatega "liigu", mille peale õunad kukkuma hakkavad.
Alguses tuleb määrata punkt, kus õun nähtavale ilmub (lava ülemine serv, y-koordinaat peaks alloleva näite puhul olema selline, et õun lava serva ei puudutaks, sest liikumise lõppemine on kontrollitud serva puutumisega).
Siin saab kasutada juhuarvu klotsi. Juhuarv on etteantud vahemikust juhuslikult valitud arv. Alloleva näite puhul valitakse x koordinaadi väärtus vahemikust -220 kuni 220 ehk siis lava piirid (nii, et õun serva ei puudutaks).

Liikumine lõpeb alumise serva puudutamisel ja siis õun peidetakse, et 2 sekundi pärast jälle lava ülemisest servast teda näidata.

Mängu lõpetamine

Sellest, et mäng läbi sai, oleks hea ka mängijale teada anda. 
Mängu lõpetamiseks on jällegi mitu võimalust:
- luua mängu lõpust teavitav taust ja anda talle nimi (alloleval näitel on sellise tausta nimeks finish). Nüüd saab lisada kontrollploki, et kui tausta nimeks saab lõputausta nimi, siis peatatakse programm ja peidetakse tegelased).
- luua muutuja, mis suureneb "levelite" kasvades ja teatud arvu juures kuvab teate mängu lõppemise kohta (muutujatega tegeleme järgmisel tunnil).

Ülesanne
  • Loo olemasolevale mängule veel 2 "levelit" ja programmeeri nende vahetumine.
  • Loo lavale ka taust lõpp, mis annaks mängijale teada, et nüüd sai mäng läbi.
  • Loo objekt, mis hakkab ülevalt lava servast suvalistest kohtadest alla kukkuma.






teisipäev, 8. november 2016

Programmi suhtlus kasutajaga (parooli küsimine) ja tingimuslaused

Täna proovime panna programmi kasutajaga suhtlema nii, et ta reageeriks kasutaja poolt sisestatud andmetele.
Tingimustega tutvusime veidi juba plokkskeeme joonistades (kui tingimus on täidetud, siis teeb programm midagi, kui ei ole, siis ei tee või teeb midagi muud). Näiteks kui kasutaja sisestatud parool on õige, siis hakkab programm tööle, kui ei ole, siis ei hakka.

Tervitamine ja parooli küsimine

Ülesanne 1

Tegelane küsib kasutaja nime ja peale nime sisestamist tervitab teda nimepidi! Edasi küsib tegelane parooli. Õige parooli sisestamisel hakkab ta tantsima.

Rohelised käsuplokid tulevad tehete alt. Nende abil saab teha matemaatikatehteid, seada tingimusi ja praeguse näite puhul saab kokku liita ka sõnu ehk tekste ühendada.
Tegelase tervitus ja vastus näeb välja selline:
Kui me tahame, et tegelane tegutseks edasi alles peale seda, kui oleme sisestanud õige parooli, tuleb lisada järgmised käsuplokid:
Edasi lisa programmijupp, mis paneks tegelase õige parooli sisestamisel "tantsima".

Spikker
Tantsimine peaks olema korduste plokk (näiteks kordab 10 korda, ära kasuta siin lõpmatut kordust, sest programmi on vaja edasi arendada). Edasine sõltub tegelase valikust. Kui valisid erinevaid kostüüme omava tegelase, siis võid lahendada tantsimise kostüümivahetusega), kui aga tegelase, kellel "tantsuks" mõeldud kostüümid puuduvad, siis pead programmeerima tema liikumise selliseks, et tekiks nn tantsimise efekt.

Ülesanne 2
Kui parool valesti sisestati, siis tegelane ütleb seda (näiteks "Vale parool") ning küsib uuesti (3 korda). Kui parooli on 3 korda valesti sisestatud, siis lõpetab küsimise ja ütleb, et rohkem ei saa parooli sisestada.

Spikker
Lisada tuleb veel üks korduste plokk (korda 3), mille sisse jääks kogu parooli küsimine (korduste plokke saab üksteise sisse panna) ja vastamine "Vale parool".

Lisa oma projektile ka taust (juhul kui Sa ei kasutanud mõne eelmise tunni põhja) ning klõpsa siis nupul "Jaga". 
Lisa oma töö Stuudiosse (ava blogi paremast servast lingi Rühmade lehed alt oma klassi rühma link ning vaata, kuidas seda teha) - siis näeb seda õpetaja ja ka sinu klassikaaslased.


Valmis programmike võiks toimetada nii:

esmaspäev, 7. november 2016

Joonejärgija mäng

Järgmiseks loome mängu, kus nooleklahvidega tuleb tegelast mööda kindla värviga joont liigutada. Joonelt väljaminek või joone ääre puutumine tähendab automaatselt alguspunkti tagasiminekut.

Kui jätkad eelmisel tunnil tehtud parooliküsimise skriptiga, siis peale õige parooli sisestamist peaks skript saatma välja teate, mis vahetaks tausta joonemängule sobivaks ja annaks spraidile teada, et nüüd peab hakkama liikuma.

1. Uue tausta joonistamine


Selleks vali "Lava" ja siis kesmiselt menüüribalt "Taustad". Pliiatsi märgil klõpsates saad luua uue tühja tausta ja siis joonistusvahendeid kasutades sinna ühe joone joonistada.
NB! Tee joon piisavalt paks, et sinu tegelane mahuks seal liikuma!

Nipp! Tegelast on võimalik ka väiksemaks muuta. Selleks võid lisada näiteks tegelase skripti näiteks mängu alustamise teate järele välimuse ploki

Nüüd peaks sul olema 2 tausta. Üks kindlasti see, millel on joon.

2. Lava programmeerimine (taustavahetus).

Lisa Lavale skript, mis võtaks mängu alustades (klõps rohelisel lipul) ette ilma jooneta nö avatausta ja teate saamise peale (sama teade, mis spraidi skriptis peale õige parooli sisestamist käivitab mängu) võtab taustaks joone.

3. Spraidi (tegelane) programmeerimine nooleklahvidega liikuma ja värvile reageerima.

Tegelane peaks teate saades (või mängu alguses) minema laval kindlasse punkti (joone algusesse). Hiirega saad laval spraidi sobivasse kohta nihutada ja siis liikumise plokist õige käsu võtta (koordinaate saad valgetes avaustes muuta).

Edasi tuleb programmeerida tegelase liikumine klahvivajutuse peale. Oled seda ka varasemalt teinud, aga siis programmeerisime kõik klahvivajutused eraldi. Nüüd aga vaatame, kuidas saaks kõik klahvivajutused ühte skripti kokku panna.

Selleks tuleks leida menüüst üles plokk "Andurid". Täna läheb vaja sealt kahte plokki - esmalt "klahv tühik on all?" ja siis ka "puudutab värvi".

Järgmiseks programmeerimine tegelase liikumist nii, et kui nooleklahv "ülesnool" on all, siis liigub tegelane üles.
Lõputu korduse sisse on vaja see tingimus panna selleks, et programm teaks, mis tegevust ta seni kuni klahvi all hoitakse, tegema peab.
Proovi nüüd sarnaselt programmeerida ka alla, vasakule ja paremale liikumine! Tuleta meelde, et parem-vasak liikumise puhul muutus x-koordinaat! Pane kõik plokid lõpmatu korduse sisse!
Värvile reageerimine

Järgmiseks oleks vaja, et kohe kui tegelane rajalt ära läheb, satuks ta tagasi alguspunkti. Selleks kasutame teist andurit - "puudutab värvi ...". Värvi valimiseks klõpsa anduriklotsil oleval värvikastil ning edasi laval vastavalt värvil, millele sprait peab reageerima (näitepildil on selleks roheline värv).

Ka see tingimus tuleb lisada lõpmatu korduse ploki sisse, sest me tahame ju, et tingimust kontrollitakse igal võimalikul hetkel.

Joonemängu skript tervikuna võiks välja näha selline:





teisipäev, 1. november 2016

Tegelaste juhtimine klaviatuuri abil

Kõige tavalisem on see, kui klõpsame rohelist lipukest ning programm hakkab tööle. Samas on võimalik tegelast panna liikuma ka näiteks nooleklahve kasutades.

Selleks tuleb valida "Sündmused" valikust klots "kui vajutatakse klahvi ..." ja valida siis sobiv klahv

Liikumine koordinaatide muutmist kasutades.

Selleks, et tegelane liiguks näiteks "nool üles" klahvi vajutamise peale üles, tuleb esmalt tutvuda koordinaatteljestikuga.

Üles-alla liikumiseks tuleb muuta y-koordinaati. Üles liikumiseks peab y-koordinaat muutuma positiivse sammuga (10) ja alla liikumiseks negatiivse sammuga (-10).

Selleks, et tegelane liiguks "nool üles" klahvi vajutamisel üles, peab muutma y koordinaati mingi kindla sammu võrra. 

Alla liikumiseks tuleb muuta y koordinaati vastavalt -10 (või mõne muu negatiivse arvu) võrra.
Paremale liikumiseks tuleb muuta x koordinaati positiivse arvu võrra (näiteks 10) ja vasakule liikumiseks negatiivse arvu võrra (näiteks -10)

Ülesanne 1

Seadista nooleklahvid nii, et "nool üles" liigutaks tegelast 10 sammu üles, "nool alla" liigutaks 10 sammu alla, "nool paremale" liigutaks 10 sammu paremale ja "nool vasakule" liigutaks 10 sammu vasakule.

Klahvivajutuse alla saab panna ka pikema tegevuse, näiteks sellise, et A-tähe vajutamisel ütleb tegelane "Tere!"

Pane oma tegelane klahvivajutuse peale midagi ütlema!

Ütlemise käsuploki leiad "Välimus" alt.

Täienda oma programmi nii, et tegelane kaoks, kui temal hiirega klõpsad ja ilmub uuesti tagasi, kui klõpsad rohelist lippu!

Vihje! "Välimuse" valikust leiad plokid "näita" ja "peida".

Ülesanne 2

Täienda oma programmi nii, et klaviatuuril mingi klahvi vajutamisel küsiks tegelane sinu nime ning peale nime sisestamist "ütleks" sinu nime.

Nime küsimine ja saadud vastuse kasutamise võimalus on valiku "Andurid" all.
Vastus tuleb sisestada lava alla tekkinud ribale ning vajutada klahvi "Enter".
Vastuse kasutamine näiteks tegelase tekstis toimub nii (NB! Vastuse klots võetakse "Andurite" valikust)

Kui soovid lisada vastusesse rohkem sõnu, siis pead abiks võtma "Tehted" valikust sõnade ühendamise ploki

Lisa oma programmile avaslaid (slaidid), kuhu kirjutad programmi kasutamise juhise (mis klahv mida teeb).
Näiteks: 
nooleklahvidega saate tegelast liigutada üles-alla ja vasakule-paremale
klahvi "A" vajutamisel küsib tegelane teie nime ja ütleb nime sisestamisel "Tere ... nimi".

Vihje!
Loo uus "lava" ja kirjuta sellele tekst. Pane avaslaid vahetuma, kui sellel hiirega klõpsata.