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
print(“Panen kummikud jalga”) – väljundisse trükitakse lause “Panen kummikud jalga”
- kui vihma ei saja, siis
- lähen jalutama
vihmasajab = 1
if vihmasajab ~= 0 then
print("Lähen jalutama.")
end
print(“Lähen jalutama.) – väljundisse trükitakse lause “Lähen jalutama”
- < (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”
- esimesena kontrollitakse , kas muutuja vihmasajab väärtus on 2 (if vihmasajab==2 then):
- 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”
- if-then (kui on ainult üks tingimus), if-elseif ja if-else (kui on rohkem kui üks tingimus) tingimuslausetes liigutakse ülevalt alla:
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)
- kui i on väiksem kui 2 (if i<2 then):
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.