Roblox
Belajar Luau 03: Perulangan for, while, repeat, break, dan continue
Menjalankan kode berulang kali di Luau: for numerik dengan langkah, while, repeat-until, break, continue, nested loop, dan aturan task.wait di Roblox.

Perulangan (loop) menjalankan kode yang sama berkali-kali tanpa harus menulisnya berulang-ulang. Di game, loop dipakai untuk menyusun lantai, memberi hadiah harian, menyerang bos sampai kalah, dan banyak lagi.
Jalankan di terminal:
luau 03-perulangan.luau
Yang akan dipelajari
fornumerik, termasuk langkah dan hitung mundur- Mengumpulkan nilai di dalam loop
whiledanrepeat ... untilbreakdancontinue- Loop di dalam loop
- Aturan penting loop di Roblox:
task.wait
for numerik
Bentuknya for i = awal, akhir do ... end:
for i = 1, 5 do
print("Putaran ke-" .. i)
end
Angka ketiga adalah langkah (step), yaitu loncatan setiap putaran:
for i = 2, 10, 2 do
print(i) -- 2, 4, 6, 8, 10
end
Langkah negatif dipakai untuk hitung mundur:
for detik = 3, 1, -1 do
print(detik .. "...")
end
print("MULAI!")
Mengumpulkan nilai di dalam loop
Contoh: total hadiah login 7 hari, dengan hari ke-n mendapat n × 10 koin.
local totalKoin = 0
for hari = 1, 7 do
local hadiah = hari * 10
totalKoin += hadiah
print(`Hari {hari}: +{hadiah} koin (total {totalKoin})`)
end
while
while mengulang selama kondisinya true. Pakai ini kalau jumlah putarannya belum diketahui di awal.
local darahBos = 100
local seranganKe = 0
while darahBos > 0 do
seranganKe += 1
darahBos -= 35
print(`Serangan {seranganKe}: darah bos tinggal {darahBos}`)
end
print(`Bos kalah setelah {seranganKe} serangan!`)
Peringatan: kalau kondisinya tidak pernah menjadi
false, loop berjalan selamanya (infinite loop) dan program atau game akan macet. Misalnya karena lupa menulisdarahBos -= 35.
repeat ... until
Kebalikan dari while: isi loop dijalankan dulu minimal sekali, baru kondisinya dicek. Loop berhenti saat kondisi until bernilai true.
local percobaan = 0
local berhasil = false
repeat
percobaan += 1
-- anggap saja percobaan ke-3 berhasil
if percobaan == 3 then
berhasil = true
end
print(`Mencoba menyimpan data... percobaan {percobaan}`)
until berhasil or percobaan >= 5
break: keluar lebih awal
local petiAdaDiRuang = 4
for ruang = 1, 10 do
print(`Memeriksa ruang {ruang}`)
if ruang == petiAdaDiRuang then
print("Peti harta ditemukan!")
break -- langsung keluar, ruang 5-10 tidak diperiksa
end
end
continue: lewati sisa putaran ini
continue melompati sisa kode di putaran ini dan langsung lanjut ke putaran berikutnya.
for musuh = 1, 6 do
if musuh % 3 == 0 then
continue -- musuh ke-3 dan ke-6 kebal, dilewati
end
print(`Menyerang musuh {musuh}`)
end
Loop di dalam loop
Contoh: membuat grid 3×3, seperti menyusun lantai di Roblox.
for baris = 1, 3 do
local isiBaris = ""
for kolom = 1, 3 do
isiBaris ..= `[{baris},{kolom}] `
end
print(isiBaris)
end
Catatan khusus Roblox: task.wait
Di Roblox Studio, loop "selamanya" sering dipakai untuk hal seperti memberi koin setiap detik. Wajib ada task.wait() di dalamnya supaya game sempat "bernapas". Tanpa task.wait(), Studio akan freeze.
while true do
koin += 1
task.wait(1) -- tunggu 1 detik
end
task.wait hanya ada di Roblox, jadi contoh ini tidak bisa dijalankan di terminal.
Latihan
- Print tabel perkalian 7, dari "7 x 1 = 7" sampai "7 x 10 = 70".
- Sistem level: pemain mulai di level 1 dengan 0 XP. Setiap putaran pemain mendapat 40 XP. Butuh 100 XP untuk naik level, dan sisa XP dibawa ke level berikutnya. Pakai
while, ulangi sampai pemain mencapai level 5. Print setiap kali naik level, lalu print berapa putaran yang dibutuhkan. - Dari angka 1 sampai 30, print angka yang habis dibagi 4, tetapi berhenti total (
break) begitu bertemu angka yang habis dibagi 4 dan 6 sekaligus. Angka berapa yang membuat loop berhenti?
Kunci jawaban
Coba kerjakan sendiri dulu sebelum membaca bagian ini.
Latihan 1: tabel perkalian 7
for i = 1, 10 do
print(`7 x {i} = {7 * i}`)
end
Latihan 2: sistem naik level
local level = 1
local xp = 0
local putaran = 0
while level < 5 do
putaran += 1
xp += 40
if xp >= 100 then
xp -= 100 -- sisa XP dibawa ke level berikutnya
level += 1
print(`Putaran {putaran}: NAIK ke level {level} (sisa XP {xp})`)
end
end
print(`Butuh {putaran} putaran untuk mencapai level 5`) -- 10 putaran
Cek dengan hitungan: dari level 1 ke 5 berarti naik 4 kali, yaitu 400 XP. 400 / 40 = 10 putaran. Cocok!
Kalau sisa XP tidak dibawa (xp = 0 saat naik), hasilnya berbeda: setiap level butuh 3 putaran (120 XP, sisa 20 hilang), jadi totalnya 12 putaran.
Latihan 3: kelipatan 4, berhenti di kelipatan 4 dan 6
for angka = 1, 30 do
if angka % 4 == 0 and angka % 6 == 0 then
print(`Berhenti di {angka}`)
break
end
if angka % 4 == 0 then
print(angka)
end
end
Hasilnya 4, 8, lalu berhenti di 12. 12 adalah angka pertama yang habis dibagi 4 dan 6 (KPK dari 4 dan 6).
Perhatikan urutan pengecekannya: pengecekan break ditaruh di atas supaya 12 tidak ikut tercetak sebagai kelipatan 4. Kalau soalnya dimaksudkan "12 tetap dicetak, baru berhenti", tukar urutannya.
Diskusi (0)
Kami menyimpan nama (opsional), komentar, dan hash teknis (bukan alamat IP asli) untuk mencegah spam. Cookie fungsional dipakai agar Anda dapat mengedit atau menghapus komentar sendiri dari browser ini. Untuk permintaan penghapusan, gunakan halaman kontak.
Belum ada komentar. Mulai diskusinya.