Roblox, 3. kord

Kuna sageli on vaja testida erinevatele tingimustele vastavust, siis järgmisena võtame ette if-then tingimuslaused. Tingimuslause puhul saab kirja panna erinevaid tegevusi sõltuvalt sellest, kas tingimused on tõesed või väärad. Tavapärane tingimuslause on näiteks:

  • kui vihma sajab, siis
    • panen kummikud jalga

Esmalt defineerime muutuja vihmasajab ja omistame talle väärtuse 1:

vihmasajab = 1

Seejärel kontrollime tingimuse vastavust:

if vihmasajab == 1 then

print("Panen kummikud jalga.")

end

if vihmasajab == 1 then – kontrollitakse, kas vihmasajab väärtus on 1 (NB! kaks võrdusmärki (==) tähendab on võrdne, üks võrdusmärg tähendab, et muutujale omistatakse väärtus, nt vihmasajab=1 käigus saab muutuja väärtuseks 1) ja kui on, siis võetakse selle osa tegevused ette
print(“Panen kummikud jalga”) – väljundisse trükitakse lause “Panen kummikud jalga”
Järgmisena vaatame veel teisi võrdlusvõimaluse. Näiteks võtame tingimuse, kui muutuja ei ole võrdne mingi väärtusega –
  • kui vihma ei saja, siis
    • lähen jalutama
vihmasajab = 1
if vihmasajab ~= 0 then

print("Lähen jalutama.")

end

if vihmasajab ~= 0 then – kontrollitakse, ega vihmasajab väärtus ei ole 0 (NB! tilde ja võrdusmärk (~=) tähendab ei ole võrdne, ja kui tingimus on tõene (st vihmasajab väärtus ei ole võrdne 0’ga), siis võetakse selle osa tegevused ette
print(“Lähen jalutama.) – väljundisse trükitakse lause “Lähen jalutama”
Lisaks kehtivad ka teised matemaatilised võrdlused (kui võrreldakse numbreid, sest väga tuleb teha matemaatilisi võrdlusi):
  • < (väiksem)
  • > (suurem)
  • <= (väiksem võrdne)
  • >= (suurem võrdne)

Mõnikord tuleb võrdlusi teha mitme tingimuse osas –

  • kui vihma sajab paduvihma, siis
    • võtan vihmavarju kaasa ja panen kummikud jalga,
  • kui sajab uduvihma, siis
    • panen kummikud jalga,
  • muul juhul
    • ei võta vihmavarju kaasa ega pane ka kummuid jalga

Paneme selle koodi kirja, kus muutuja vihmasajab väärtus on 2, kui sajab paduviha, muutuja väärtus on 1, kui sajab uduvihma ja muutuja teised väärtused vastavad sellele, kui ei saja ei paduvihma ega ka uduvihma ja toome näite, mille puhul sajab uduvihma (st muutuja vihmasajab väärtus on 1):

vihmasajab = 1
if vihmasajab==2 then
print("Võtan vihmavarju kaasa ja panen kummikud jalga.")

elseif vihmasajab==1 then

print("Panen kummikud jalga.")

else

print("Ei võta vihmavarju kaasa ega pane kummikuid jalga.")end

Loogika on selline:

    • if-then (kui on ainult üks tingimus), if-elseif ja if-else (kui on rohkem kui üks tingimus) tingimuslausetes liigutakse ülevalt alla:
      • esimesena kontrollitakse , kas muutuja vihmasajab väärtus on 2 (if vihmasajab==2 then):
        • kui ON, tehakse selle all olevad tegevused, antud juhul kuvatakse tekst “Võtan vihmavarju kaasa ja panen kummikud jalga”
        • kui EI OLE, liigutakse järgmise tingimuse juurde edasi
      • teisena kontrollitakse, kas muutuja vihmasajab väärtus on 1 (elseif vihmasajab==1 then):
        • kui ON, tehakse selle all olevad tegevused, antud juhul kuvatakse tekst “Panen kummikud jalga”
        • kui EI OLE, liigutakse järgmise tingimuse juurde edasi
      • kui kumbki eelmistest tingimustest ei ole täidetud (else vihmasajab väärtus EI OLE 2 ja vihmasajab väärtus EI OLE 1, st vihmasajab väärtus on mistahes muu väärtus kui 2 ja 1):
        • kuvatakse tekst “Ei võta vihmavarju kaasa ega pane kummikuid jalga”
    • kui vihmasajab väärtus oleks 2, siis teostataks ainult esimene kontroll ja kuvataks tekst “Võtan vihmavarju kaasa ja panen kummikud jalga
    • kuna vihmasajab väärtus on 1, siis kuvatakse tekst “Panen kummikud jalga”
    • kui vihmasajab väärtus oleks 0, siis teostataks esimene ja teine kontroll ja kuna need oleksid väärad, kuvataks tekst “Ei võta vihmavarju kaasa ega pane kummikuid jalga”

Aga, et oleks ka veidi seost sellega, mida senini oleme teinud, siis kasutame tingimuslauset for-tsükli, millega tekistasime endale mänguväljale uusi klotse, sees:

for i=0, 10, 1 do

local detail2=Instance.new("Part")
detail2.Parent=game.Workspace
-- Kui i väärtus on väiksem kui 2
if i<2 then

detail2.BrickColor=BrickColor.new("Tawny")
detail2.Position=Vector3.new(20+i*4,0,0)

-- Kui i väärtus on väiksem kui 6 (if-tingimusest on juba selge, et i on väärtuseks saanud 2)
elseif i<6 then

detail2.BrickColor=BrickColor.new("Flint")
detail2.Position=Vector3.new(20+i*4,i*1,0)
detail2.Anchored=true

-- Kui i väärtus on suurem kui 5 (elseif tingimusest on juba selge, et i on väärtuseks on saanud 6)
else

detail2.BrickColor=BrickColor.new("Royal purple")
detail2.Position=Vector3.new(20+i*4,10-i*1,0)
detail2.Anchored=true

end

wait(0.2)
end

Loogika on siis selline:

  • for-tsüklit teostatakse 0st 10ni, kasutades loendurit i, mille väärtust suurendatakse 1 võrra
    • kui i on väiksem kui 2 (if i<2 then):
      • muudetakse klotsi värvust
      • laotakse iga järgmine klots eelmisest 4 ühiku võrra x-teljel eemale
    • kui i on väiksem kui 6 (elseif i<6 then):
      • muudetakse klotsi värvust
      • laotakse iga järgmine klots eelmisest 4 ühiku võrra x-teljel eemale ja 1 ühiku võrra y-teljel ülespoole (NB! pane tähele muutusi Vector3.new parameetrite hulgas – senise 20+4*i,0,0 asemel on 20+4*i,i*1,0)
      • iga klots fikseeritakse tema asukohas, et klotsid alla ei kukuks (detail2.Anchored=true)
    • kui i on suurem kui 5 (else):
      • muudetakse klotsi värvust
      • laotakse iga järgmine klots eelmisest 4 ühiku võrra x-teljel eemale ja alates 5 ühikus 1 ühiku võrra y-teljel allapoole (NB! pane tähele muutusi Vector3.new parameetrite hulgas – seniste 20+4*i,0,0 ja 20+4*i,i*1,0 asemel on 20+4*i,10-i*1,0)
      • iga klots fikseeritakse tema asukohas, et klotsid alla ei kukuks (detail2.Anchored=true)

Seekordseks ülesandeks on while-tsükli ja if-tingimiste abil ehitada trepp, millel on kaks ristuvat treppi, mis:

  • oleksid kolme erinevat värvi
  • algaksid ja lõpeksid sama värviga
  • tõuseksid üles ja tuleksid alusplaadi peale tagasi

Pärast vajalikke muudatusi salvesta muudatused, valides kas:

  • salvestamise faili (projekt on siis ainult kohalikus arvutis) File -> Save to File või
  • Roblox’i keskkonda (projekt on kättesaadav Roblox’i keskkonnast) File -> Save to Roblox

Ja seekordseks nuputamisülesandeks on tähtede mäng. Ehk siis 5 minuti jooksul tuleb sõna ARVUTIMÄNGUTEGELANE tähtedest moodustada võimalikult palju sõnu.