Kondisi banyak

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

Menunjukkan sintaks untuk elseif dan lainnya

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 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 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 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 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, 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.

  1. 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
    >

  2. 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.Parent
    local timePassed = 0
  3. Buat fungsi bernama finish() .


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. Secara 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")
    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. 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.

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


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- Dijalankan 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() dipanggil lagi, atur raceActive ke false.


    local function finish()
    print("touched the finish line")
    raceActive = false
    end
  4. Tes 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.

  1. 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 do
    end
  2. Untuk 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 do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. Mainkan 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.

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


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    end
  2. Untuk 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 = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    end
    end
  3. Tes 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.

  1. 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 = 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!")
    end
    end
  2. Gunakan pola yang sama untuk medali perunggu. Periksa kode Anda dengan contoh di bawah ini.


    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!")
    end
    end
  3. Tes 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.

  1. 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 = 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

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