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 skenario tambahan untuk apa yang harus terjadi di bawah beberapa kondisi. Sintaksnya terlihat seperti ini:

Menampilkan sintaks untuk elseif dan else
if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
end

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

Kode beberapa kondisi

Untuk proyek ini, Anda bisa menulis pernyataan if yang unik untuk setiap medali untuk memberikan penghargaan 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 mudah dibaca dan efisien untuk mengkodekan 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 finish, lalu buat skrip untuk menghitung waktu pemain dan memberikan medali yang berbeda.

  1. Buat bagian yang terikat bernama FinishLine. Untuk mempercepat pengujian, tempatkan awal dan akhir dekat satu sama lain. Anda dapat memindahkan garis finish setelah menyelesaikan skrip.

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

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

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

    • Kode fungsi bernama partTouched() yang menjalankan finish() ketika seorang pemain menyentuhnya.
    • Hubungkan bagian garis finish ke partTouched().
    • Bandingkan kode Anda dengan contoh di bawah ini.
    local function finish()
    print("menyentuh garis finish")
    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 ketika Anda menyentuh garis finish.

Cegah finish() dari pengulangan

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

Gunakan 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 finish
    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 finish")
    raceActive = false
    end
  4. Uji coba permainan Anda untuk memeriksa bahwa Anda hanya melihat pernyataan cetak uji Anda sekali.

Lacak waktu

Seperti pernyataan if, loop while juga dapat menggunakan kondisi untuk melihat apakah ia 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 sekali setiap detik. Sertakan pernyataan cetak untuk menguji pekerjaan Anda.

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

Berikan medali kepada pemain

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

  1. Untuk mengonfirmasi setiap medali dapat diberikan, gunakan pernyataan cetak.

    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 konfirmasi bahwa medali emas dapat diberikan.

Tambahkan kondisi tambahan

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

  1. Untuk medali perak, gunakan elseif dan rentang waktu yang diinginkan berikutnya. 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 dari yang 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, mulai baris baru dan ketik else. Jangan tambahkan then. Di bawah else, gunakan pernyataan cetak untuk mendorong mereka untuk 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. Akhirnya, 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 yang tersisa tidak akan diperiksa, dan kode mereka tidak akan dijalankan.

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 pada bagian menggunakan GUI Permukaan, seperti dalam 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 selesai
local raceActive = true
-- Berjalan ketika pemain menyentuh garis finish 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 ketika 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 selama balapan aktif. Harus berada 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.