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!