Struktur kontrol dapat memiliki lebih dari satu kondisi. Keyword else dan elseif dapat menciptakan skenario tambahan untuk apa yang harus terjadi di bawah beberapa kondisi. Syaraf terlihat seperti:
Menunjukkan syntax untuk else dan untuk else
if isGreen thenprint("Go")elseif isYellow thenprint("Slow")elseif isPedestrians thenprint("Wait")elseprint("stop")end
Dalam proyek ini, else dan elseif digunakan untuk menyelesaikan kursus parkir di mana pemain menerima hadiah tergantung waktu penyelesaian mereka.
Mengkode Beberapa Syarat
Untuk proyek ini, Anda bisa menulis pernyataan unik untuk setiap medali untuk diberikan kepada pemain, tetapi itu memakan waktu bertahun-tahun. 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 dan efisien untuk menulis ini adalah menggunakan satu pernyataan if dan menggunakan kata kunci elseif untuk menyediakan kondisi alternatif untuk diuji jika kondisi sebelumnya tidak benar.
Menggunakan else dan else
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 atas dan hanya mengeksekkan kode untuk kondisi pertama yang benar ditemukannya.
Mengatur Jalur Balap
Mulai dengan menempatkan titik awal kursus dan garis finish, lalu buat script untuk menyinkronkan pemain dan memberikan berbagai medali.
Buat bagian yang tepat bernama FinishLine. Untuk mempercepat pengujian, letakkan awal dan akhir dekat satu sama lain. Anda dapat menyesuaikan garis finish setelah menyelesaikan script.
Di FinishLine, sisipkan skrip bernama RaceManager. Kemudian, tambahkan satu variabel untuk menyimpan berapa detik telah berlalu sejak balapan dimulai dan satu variabel untuk mengacu pada FinishLine.
local finishLine = script.Parentlocal timePassed = 0Buat fungsi bernama finish() .
local timePassed = 0local finishLine = script.Parentlocal function finish()endPada diri memiliki:
- Kode fungsi bernama partTouched() yang berjalan finish() ketika seorang pemain menyentuhnya.
- Connect the finish line part to 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)Mainkan dan periksa bahwa finish() dianggil saat Anda menyentuh garis finish.
Simpan finis() Dari Repeating
Saat ini, setiap kali seorang pemain menyentuh garis finish, finish() secara berkala dianggil setelah pemain menyentuh bagian tersebut.
Gunakan Boolean , variabel yang menyimpan benar atau salah, untuk memastikan bahwa finish() hanya dipanggil sekali.
Buat variabel baru bernama raceActive dan tetapkan ke true .
local timePassed = 0local finishLine = script.Parentlocal raceActive = true-- Diperlukan saat pemain menyentuh bagian garis finishlocal function finish()Tambahkan kondisi kedua ke if statement 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() dari dipanggil lagi, tetapkan raceActive ke false.
local function finish()print("touched the finish line")raceActive = falseendMainkan game Anda untuk memeriksa bahwa Anda hanya melihat pernyataan cetak ulang tes Anda sekali.
Menjaga Catatan Waktu
Seperti pernyataan if, loop while juga dapat menggunakan kondisi untuk melihat apakah itu harus berjalan. Untuk menghitung waktu pemain, buat timer menggunakan while true do loop yang hanya berjalan ketika raceActive kata benar.
Pada bagian bawah dari script, ketik while raceActive == true do. Tekan Enter untuk menyelesaikan otomatis dan menambahkan end.
finishLine.Touched:Connect(partTouched)while raceActive == true doendUntuk menentukan waktu pemain, dalam loop, tambahkan 1 ke variabel timePassed sekali setiap detik. Masukkan pernyataan cetak untuk menguji pekerjaan Anda.
finishLine.Touched:Connect(partTouched)while raceActive == true dotask.wait(1)timePassed += 1print(timePassed)endMainkan game dan periksa bahwa Anda melihat setiap detik yang ditunjukkan dalam Jendela Keluaran.
Memberikan Medali Pemain
Untuk menyelesaikan, gunakan if statement dengan beberapa kondisi untuk memberi penghargaan pemain medali berbeda berdasarkan pelaksanaanmereka. Gunakan if statement dan dua if statement untuk memeriksa waktu penyelesaian 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 menghadiahkan medali emas, kode if yang membandingkan timePassed dengan waktu tertinggi 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!")endendMainkan dan konfirmasi medali emas dapat diberikan.
Menambahkan Kondisi Tambahan
Sekarang setelah Anda menguji untuk medali emas, kondisi kode untuk medali lain menggunakan kata kunci elseif.
Untuk perak medali, gunakan elseif dan rentang waktu berikutnya yang diinginkan. 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!")endendPlaytest untuk medali perak dan perunggu.
Tips Troubleshoot
Jika Anda tidak melihat logam perak dan perunggu muncul, coba salah satu di bawah ini.
- Setiap elseif elif harus memiliki then setelah kondisinya.
- Dalam partTouched() , pastikan kondisi kedua dari if statement menggunakan ==, seperti dalam raceActive == true .
- Periksa bahwa setiap elseif -number1</number> adalah dalam rentang. Setiap kondisi elseif harus berada di antara baris pertama dari if/then statement dan itu terakhir end.
Menambahkan Syarat Else
Jika pemain tidak mendapatkan salah satu dari medali, Anda harus mengencour mereka untuk mencoba lagi. Dalam hal ini, Anda dapat menggunakan pernyataan else, yang berjalan jika tidak ada kondisi lainnya yang benar, untuk menunjukkan pesan.
Di bawah elseif Alih-alih terakhir dan di atas end akhiri, mulai satu baris baru dan ketik else end. 2> Tidak2> menambahkan maka. Di bawah lain, gunakan pernyataan cetak untuk mendesak mereka untuk 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. Gunakan Playtest untuk melihat pesan lainnya.
Sintesis
Struktur kontrol dapat memiliki lebih dari satu skenario. Gunakan jika pernyataan untuk menetapkan pernyataan awal untuk periksa, dan kemudian tambahkan sebanyak elseif kondisi sebagai perlزام. Terakhir, gunakan else untuk menyatakan apa yang harus terjadi jika semua kondisi yang diberikan salah.
Memulai di bagian atas, semua kondisi akan diperiksa, dan hanya kondisi pertama yang benar akan mengeksekusi kode. Kondisi yang tersisa tidak akan diperiksa, dan kode mereka tidak akan berjalan.
Setelah menyelesaikan proyek, Anda dapat menambahkan elemen baru dengan beberapa cara tambahan.
- Tambahkan kode sehingga pemain dapat mengulangi balapan dengan menyentuh garis start saat mereka selesai.
- Desain cara untuk menunjukkan waktu selama balapan. Anda dapat menunjukkan waktu di bagian menggunakan Surface GUI, seperti dalam tutorial Membuat Jembatan Waktu.
Completed script
local timePassed = 0
local finishLine = script.Parent
-- Digunakan untuk menjaga selesain() dan timer dari mengulangi saat balapan selesai
local raceActive = true
-- Berjalan ketika pemain menyentuh garis finish dan menunjukkan 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 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)
-- Menjaga waktu balapan saat balapan aktif. Harus berada di bawah kode script.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end