Struktur kontrol dapat memiliki lebih dari satu kondisi.Kata kunci else dan elseif dapat membuat skenario tambahan untuk apa yang harus terjadi di bawah beberapa kondisi.Syntaxnya terlihat seperti:
Menunjukkan sintaks untuk elseif dan lainnya
if isGreen thenprint("Go")elseif isYellow thenprint("Slow")elseif isPedestrians thenprint("Wait")elseprint("stop")end
Dalam proyek ini, else dan elseif digunakan untuk membuat kode kursus parkour di mana pelari menerima penghargaan tergantung pada waktu finis mereka.

Kode banyak kondisi
Untuk proyek ini, Anda bisa menulis pernyataan if unik untuk setiap medali untuk menghadiahkan pemain, tetapi itu membutuhkan banyak waktu.Ambil, kejadian, kode imajiner di bawah ini.
Semua jika pernyataan
if finishTime < 5 then-- Dapatkan medali emasendif finishTime >= 5 and <= 10 then-- Dapatkan medali perakendif finishTime > 10 and <= 15 then-- Dapatkan medali perungguend
Cara yang lebih mudah dibaca dan efisien untuk membuat kode ini adalah dengan menggunakan satu pernyataan if dan menggunakan kata kunci elseif untuk memberikan kondisi alternatif untuk diuji apakah kondisi sebelumnya tidak benar.
Menggunakan elseif dan lainnya
if finishTime < 5 then-- Dapatkan medali emaselseif finishTime >= 5 and <= 10 then-- Dapatkan medali perakelseif finishTime > 10 and <= 15 then-- Dapatkan medali perungguend
Ketika pernyataan if/then dijalankan, itu akan dimulai di bagian atas dan hanya menjalankan kode untuk kondisi pertama benar yang ditemukannya.
Siapkan trek balapan
Mulai dengan menempatkan titik awal dan garis finish kursus, lalu buat skrip untuk menentukan waktu pemain dan memberikan medali yang berbeda.
Buat bagian yang diikat dengan nama FinishLine.Untuk mempercepat pengujian, letakkan awal dan akhir bersama-sama.Anda dapat memindahkan garis finish setelah menyelesaikan skrip.
Selesaikan Bagian >Seluruh Kursus >Di FinishLine, masukkan skrip bernama RaceManager.Kemudian, tambahkan satu variabel untuk menyimpan berapa banyak detik telah berlalu sejak balapan dimulai dan variabel kedua untuk merujuk ke FinishLine.
local finishLine = script.Parentlocal timePassed = 0Buat fungsi bernama finish() .
local timePassed = 0local finishLine = script.Parentlocal function finish()endSecara memiliki:
- Kode fungsi bernama partTouched() yang dijalankan finish() ketika pemain menyentuhnya.
- Hubungkan bagian garis finish ke partTouched().
- Bandingkan kode Anda dengan contoh di bawah ini.
local function finish()print("touched the finish line")endlocal function partTouched(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenfinish()endendfinishLine.Touched:Connect(partTouched)Lakukan pengujian dan periksa bahwa finish() dipanggil saat Anda menyentuh garis finish.
Jaga agar finish() tidak diulang
Saat ini, setiap kali pemain menyentuh garis finish, finish() terus dipanggil selama pemain menyentuh bagiannya.
Gunakan boolean , variabel yang menyimpan benar atau salah, untuk memastikan bahwa finish() hanya dipanggil sekali.
Buat variabel baru bernama raceActive dan atur ke true.
local timePassed = 0local finishLine = script.Parentlocal raceActive = true-- Dijalankan setiap kali pemain menyentuh bagian garis finishlocal function finish()Tambahkan kondisi kedua ke pernyataan if untuk memeriksa apakah raceActive benar sebelum memanggil finish() .
local function partTouched(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and raceActive == true thenfinish()endendUntuk menghentikan finish() dipanggil lagi, atur raceActive ke false.
local function finish()print("touched the finish line")raceActive = falseendTes permainan Anda untuk memeriksa bahwa Anda hanya melihat pernyataan cetak tes sekali.
Pantau waktu
Seperti pernyataan if, loop while juga dapat menggunakan kondisi untuk melihat apakah harus dijalankan.Untuk menentukan waktu pemain, buat pengatur waktu menggunakan loop while true yang hanya berjalan saat raceActive boolean benar.
Di bagian bawah skrip, ketik while raceActive == true do . Tekan Enter untuk menyelesaikan secara otomatis dan tambahkan end .
finishLine.Touched:Connect(partTouched)while raceActive == true doendUntuk menentukan waktu pemain, dalam lingkaran, tambahkan 1 ke variabel timePassed setiap detik. Sertakan pernyataan cetak untuk menguji pekerjaan Anda.
finishLine.Touched:Connect(partTouched)while raceActive == true dotask.wait(1)timePassed += 1print(timePassed)endMainkan permainan dan periksa apakah Anda melihat setiap detik ditampilkan di jendela Keluaran.
Hadiah medali pemain
Untuk menyelesaikan, gunakan pernyataan if dengan banyak kondisi untuk memberikan pemain medali pelaksanaanyang berbeda berdasarkan kinerja mereka.Gunakan pernyataan if dan dua pernyataan elseif untuk memeriksa waktu finis pemain dan memberi mereka medali yang benar.
Untuk mengkonfirmasi setiap medali dapat diberikan, gunakan pernyataan cetak.
local function finish()raceActive = falseprint("You finished in " .. timePassed)endUntuk memberikan medali emas, kode pernyataan if yang membandingkan timePassed dengan waktu finis yang diinginkan.Contoh ini memeriksa apakah waktu pemain kurang dari atau sama dengan 10 detik.
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")endendTes main dan konfirmasi medali emas dapat diberikan.
Tambahkan kondisi tambahan
Sekarang setelah Anda menguji medali emas, kondisi kode untuk medali lain menggunakan kata kunci elseif.
Untuk medali perak, gunakan elseif dan rentang waktu yang diinginkan berikutnya.Dalam contoh ini, rentangnya lebih besar dari 10 detik tetapi kurang dari atau sama dengan 20 detik.
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")elseif timePassed > 10 and timePassed <= 20 thenprint("You get a silver medal!")endendGunakan pola yang sama untuk medali perunggu. Periksa kode Anda dengan contoh di bawah ini.
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")elseif timePassed > 10 and timePassed <= 20 thenprint("You get a silver medal!")elseif timePassed > 20 and timePassed <= 30 thenprint("You get a bronze medal!")endendTes uji untuk medali perak dan perunggu.
Tip pemecahan masalah
Jika Anda tidak melihat logam perak dan perunggu muncul, coba salah satu di bawah ini.
- Setiap elseif harus memiliki kemudian setelah kondisinya.
- Di partTouched() , pastikan kondisi kedua dari pernyataan if menggunakan == , seperti di raceActive == true .
- Periksa bahwa setiap elseif berada dalam lingkup. Setiap elseif kondisi harus berada di antara baris pertama dari pernyataan if/then dan itu terakhir end .
Tambahkan kondisi lain
Jika pemain tidak memenangkan medali, Anda harus mendorong mereka untuk mencoba lagi.Dalam kasus ini, Anda dapat menggunakan pernyataan else, yang dijalankan jika tidak ada kondisi lain yang benar, untuk menunjukkan pesan kepada mereka.
Di bawah terakhir elseif dan di atas end, mulai baris baru dan ketik else . Jangan menambahkan kemudian.Di bawah ini, gunakan pernyataan cetak untuk meminta mereka mencoba lagi.
local function finish()raceActive = falseprint("You finished in " .. timePassed)if timePassed <= 10 thenprint("You get a gold medal!")elseif timePassed > 10 and timePassed <= 20 thenprint("You get a silver medal!")elseif timePassed > 20 and timePassed <= 30 thenprint("You get a bronze medal!")elseprint("Try again!")endend
2. Tes ulang untuk melihat pesan lainnya.
Singkatan
Struktur kontrol dapat memiliki lebih dari satu skenario.Gunakan jika pernyataan untuk mengatur pernyataan awal untuk diperiksa, lalu tambahkan sebanyak mungkin kondisi elseif yang diperlukan.Akhirnya, gunakan else untuk menyatakan apa yang harus terjadi jika semua kondisi yang diberikan palsu.
Mulai dari atas, semua kondisi akan diperiksa, dan hanya kondisi pertama yang benar akan menjalankan kode.Kondisi yang tersisa tidak akan diperiksa, dan kode mereka tidak akan dijalankan.
Setelah menyelesaikan proyek, Anda dapat memperluas tentang skrip untuk menambahkan elemen baru dengan beberapa cara tambahan.
- Tambahkan kode sehingga pemain dapat mengulangi balapan dengan menyentuh garis awal saat mereka selesai.
- Desain cara untuk menampilkan waktu selama balapan.Anda dapat menampilkan waktu pada bagian menggunakan GUI Surface, seperti dalam tutorial Buat Jembatan Berwaktu.
Completed script
local timePassed = 0
local finishLine = script.Parent
-- Digunakan untuk menjaga finish() dan timer agar tidak diulang saat balapan berakhir
local raceActive = true
-- Dijalankan saat pemain menyentuh garis finish dan menunjukkan mereka penghargaan
local function finish()
raceActive = false
print("You finished in " .. timePassed)
if timePassed <= 10 then
print("You get a gold medal!")
elseif timePassed > 10 and timePassed <= 20 then
print("You get a silver medal!")
elseif timePassed > 20 and timePassed <= 30 then
print("You get a bronze medal!")
else
print("Try again!")
end
end
-- Memeriksa apakah pemain menyentuh bagian saat balapan aktif
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- Melacak waktu balapan saat balapan aktif. Harus berada di bagian bawah skrip.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end