Beberapa kondisi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Struktur kontrol dapat memiliki lebih dari satu kondisi. Kata kunci else dan elseif dapat menciptakan scenario tambahan untuk apa yang harus terjadi di bawah beberapa kondisi. Sintaksnya terlihat seperti ini:

Menampilkan sintaks untuk elseif dan else

if isGreen then
print("Berjalan")
elseif isYellow then
print("Lambat")
elseif isPedestrians then
print("Tunggu")
else
print("berhenti")
end

Dalam proyek ini, else dan elseif digunakan untuk memprogram kursus parkour di mana pelari menerima penghargaan tergantung pada waktu penyelesaian mereka.

Kode beberapa kondisi

Untuk proyek ini, Anda dapat menulis pernyataan if yang unik untuk setiap medali yang diberikan kepada pemain, tetapi itu memakan banyak waktu. Ambil, misalnya, kode imajiner di bawah ini.

Semua pernyataan if

if finishTime < 5 then
-- Dapatkan medali emas
end
if finishTime >= 5 and <= 10 then
-- Dapatkan medali perak
end
if finishTime > 10 and <= 15 then
-- Dapatkan medali perunggu
end

Cara yang lebih dapat dibaca dan efisien untuk memprogram ini adalah dengan menggunakan satu pernyataan if dan menggunakan kata kunci elseif untuk memberikan kondisi alternatif untuk menguji apakah kondisi sebelumnya tidak benar.

Menggunakan elseif dan else

if finishTime < 5 then
-- Dapatkan medali emas
elseif finishTime >= 5 and <= 10 then
-- Dapatkan medali perak
elseif finishTime > 10 and <= 15 then
-- Dapatkan medali perunggu
end

Ketika pernyataan if/then dijalankan, ia akan mulai dari atas dan hanya menjalankan kode untuk kondisi pertama yang benar yang ditemukan.

Siapkan jalur balapan

Mulailah dengan menempatkan titik awal kursus dan garis finis, lalu buat skrip untuk menghitung waktu pemain dan memberikan medali yang berbeda.

  1. Buat sebuah bagian yang dianchored bernama FinishLine. Untuk mempercepat pengujian, tempatkan start dan end dekat satu sama lain. Anda dapat memindahkan garis finis setelah menyelesaikan skrip.

    Bagian Finis
    Seluruh Kursus
  2. Di FinishLine, masukkan skrip bernama RaceManager. Kemudian, tambahkan satu variabel untuk menyimpan berapa banyak detik yang telah berlalu sejak balapan dimulai dan variabel kedua untuk mereferensikan FinishLine.


    local finishLine = script.Parent
    local timePassed = 0
  3. Buat sebuah fungsi bernama finish().


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Sendiri:

    • Kode sebuah fungsi bernama partTouched() yang menjalankan finish() saat seorang pemain menyentuhnya.
    • Hubungkan bagian garis finis ke partTouched().
    • Bandingkan kode Anda dengan contoh di bawah ini.

    local function finish()
    print("menyentuh garis finis")
    end
    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    finish()
    end
    end
    finishLine.Touched:Connect(partTouched)
  5. Uji coba dan periksa bahwa finish() dipanggil saat Anda menyentuh garis finis.

Mencegah finish() dari pengulangan

Saat ini, setiap kali pemain menyentuh garis finis, finish() dipanggil terus-menerus selama pemain menyentuh bagian tersebut.

Gunakan sebuah boolean, variabel yang menyimpan true atau false, untuk memastikan bahwa finish() hanya dipanggil sekali.

  1. Buat variabel baru bernama raceActive dan setel ke true.


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- Berjalan setiap kali pemain menyentuh bagian garis finis
    local function finish()
  2. Tambahkan kondisi kedua ke pernyataan if untuk memeriksa apakah raceActive benar sebelum memanggil finish().


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. Untuk menghentikan finish() dari dipanggil lagi, setel raceActive ke false.


    local function finish()
    print("menyentuh garis finis")
    raceActive = false
    end
  4. Uji coba pengalaman Anda untuk memeriksa bahwa Anda hanya melihat pernyataan cetak uji Anda sekali.

Melacak waktu

Seperti pernyataan if, loop while juga dapat menggunakan kondisi untuk melihat apakah itu harus berjalan. Untuk menghitung waktu pemain, buat timer menggunakan loop while true do yang hanya berjalan ketika boolean raceActive adalah true.

  1. Di bagian bawah skrip, ketik while raceActive == true do. Tekan Enter untuk menyelesaikan otomatis dan tambahkan end.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. Untuk menghitung waktu pemain, dalam loop, tambahkan 1 ke variabel timePassed setiap detik. Sertakan pernyataan print untuk menguji pekerjaan Anda.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Uji coba pengalaman dan periksa bahwa Anda melihat setiap detik ditampilkan di jendela Output.

Memberi medali kepada pemain

Untuk menyelesaikannya, gunakan pernyataan if dengan beberapa kondisi untuk memberikan pemain medali hadiah yang berbeda berdasarkan kinerja mereka. Gunakan pernyataan if dan dua pernyataan elseif untuk memeriksa waktu penyelesaian pemain dan memberikan mereka medali yang benar.

  1. Untuk memastikan setiap medali dapat diberikan, gunakan pernyataan print.


    local function finish()
    raceActive = false
    print("Anda selesai dalam " .. timePassed)
    end
  2. Untuk memberikan medali emas, kodekan pernyataan if yang membandingkan timePassed dengan waktu penyelesaian yang diinginkan. Contoh ini memeriksa apakah waktu pemain kurang dari atau sama dengan 10 detik.


    local function finish()
    raceActive = false
    print("Anda selesai dalam " .. timePassed)
    if timePassed <= 10 then
    print("Anda mendapatkan medali emas!")
    end
    end
  3. Uji coba dan konfirmasikan bahwa medali emas dapat diberikan.

Tambahkan kondisi tambahan

Sekarang setelah Anda menguji untuk medali emas, kodekan kondisi untuk medali lainnya menggunakan kata kunci elseif.

  1. Untuk medali perak, gunakan elseif dan rentang waktu yang diinginkan selanjutnya. Dalam contoh ini, rentangnya lebih dari 10 detik tetapi kurang dari atau sama dengan 20 detik.


    local function finish()
    raceActive = false
    print("Anda selesai dalam " .. timePassed)
    if timePassed <= 10 then
    print("Anda mendapatkan medali emas!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Anda mendapatkan medali perak!")
    end
    end
  2. Gunakan pola yang sama untuk medali perunggu. Periksa kode Anda dengan contoh di bawah ini.


    local function finish()
    raceActive = false
    print("Anda selesai dalam " .. timePassed)
    if timePassed <= 10 then
    print("Anda mendapatkan medali emas!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Anda mendapatkan medali perak!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("Anda mendapatkan medali perunggu!")
    end
    end
  3. Uji coba untuk medali perak dan perunggu.

Tips pemecahan masalah

Jika Anda tidak melihat medali perak dan perunggu muncul, coba salah satu hal di bawah ini.

  • Setiap elseif harus memiliki then setelah kondisinya.
  • Di partTouched(), pastikan kondisi kedua dari pernyataan if menggunakan ==, seperti di raceActive == true.
  • Periksa bahwa setiap elseif berada dalam lingkup. Setiap kondisi elseif harus berada di antara baris pertama dari pernyataan if/then dan end terakhirnya.

Tambahkan kondisi else

Jika pemain tidak mendapatkan medali apapun, Anda harus mendorong mereka untuk mencoba lagi. Dalam hal ini, Anda dapat menggunakan pernyataan else, yang dijalankan jika tidak ada kondisi lain yang benar, untuk menunjukkan pesan kepada mereka.

  1. Di bawah elseif terakhir dan di atas end, mulailah baris baru dan ketik else. Jangan tambahkan then. Di bawah else, gunakan pernyataan print untuk mendorong mereka mencoba lagi.


    local function finish()
    raceActive = false
    print("Anda selesai dalam " .. timePassed)
    if timePassed <= 10 then
    print("Anda mendapatkan medali emas!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("Anda mendapatkan medali perak!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("Anda mendapatkan medali perunggu!")
    else
    print("Coba lagi!")
    end
    end

2 . Uji coba untuk melihat pesan else.

Ringkasan

Struktur kontrol dapat memiliki lebih dari satu skenario. Gunakan pernyataan if untuk menyiapkan pernyataan awal untuk diperiksa, dan kemudian tambahkan sebanyak mungkin kondisi elseif yang diperlukan. Terakhir, gunakan else untuk menyatakan apa yang harus terjadi jika semua kondisi yang diberikan salah.

Dimulai dari atas, semua kondisi akan diperiksa, dan hanya kondisi pertama yang benar yang akan menjalankan kode. Kondisi lainnya tidak akan diperiksa, juga tidak akan menjalankan kode mereka.

Setelah menyelesaikan proyek, Anda dapat memperluas skrip untuk menambahkan elemen baru dengan beberapa cara tambahan.

  • Tambahkan kode sehingga pemain dapat mengulangi balapan dengan menyentuh garis start ketika mereka selesai.
  • Rancang cara untuk menampilkan waktu selama balapan. Anda dapat menampilkan waktu di bagian menggunakan Surface GUI, seperti di Buat Jembatan Berwaktu tutorial.
Skrip yang diselesaikan

local timePassed = 0
local finishLine = script.Parent
-- Digunakan untuk menjaga agar finish() dan timer tidak berulang ketika balapan berakhir
local raceActive = true
-- Berjalan saat pemain menyentuh garis finis dan menunjukkan penghargaan kepada mereka
local function finish()
raceActive = false
print("Anda selesai dalam " .. timePassed)
if timePassed <= 10 then
print("Anda mendapatkan medali emas!")
elseif timePassed > 10 and timePassed <= 20 then
print("Anda mendapatkan medali perak!")
elseif timePassed > 20 and timePassed <= 30 then
print("Anda mendapatkan medali perunggu!")
else
print("Coba lagi!")
end
end
-- Memeriksa apakah seorang 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 sementara balapan aktif. Perlu ada di bagian bawah skrip.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.