หลายเงื่อนไข

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

โครงสร้างการควบคุมสามารถมีเงื่อนไขมากกว่าหนึ่งเงื่อนไข คำสำคัญ else และ elseif สามารถสร้างสถานการณ์เพิ่มเติมสำหรับสิ่งที่จะเกิดขึ้นภายใต้เงื่อนไขหลายประการ ไวยากรณ์มีลักษณะดังนี้:

แสดงไวยากรณ์สำหรับ elseif และ else

if isGreen then
print("ไป")
elseif isYellow then
print("ช้า")
elseif isPedestrians then
print("รอ")
else
print("หยุด")
end

ในโครงการนี้ else และ elseif ถูกใช้เพื่อเขียนหลักสูตรปาร์กัวร์ที่นักวิ่งได้รับรางวัลขึ้นอยู่กับเวลาในการเสร็จสิ้นของพวกเขา

รหัสเงื่อนไขหลายประการ

สำหรับโครงการนี้ คุณสามารถเขียนคำสั่ง if ที่ไม่ซ้ำกันสำหรับเหรียญแต่ละเหรียญที่จะมอบให้ผู้เล่น แต่การทำเช่นนั้นใช้เวลานานมาก ลองพิจารณารหัสสมมุติด้านล่างนี้

คำสั่ง if ทั้งหมด

if finishTime < 5 then
-- รับเหรียญทอง
end
if finishTime >= 5 and <= 10 then
-- รับเหรียญเงิน
end
if finishTime > 10 and <= 15 then
-- รับเหรียญทองแดง
end

วิธีที่อ่านง่ายและมีประสิทธิภาพมากขึ้นในการเขียนโค้ดนี้คือการใช้คำสั่ง if เพียงคำสั่งเดียวและใช้คำสำคัญ elseif เพื่อให้เงื่อนไขทางเลือกในการทดสอบหากเงื่อนไขก่อนหน้านี้ไม่เป็นจริง

ใช้ elseif และ else

if finishTime < 5 then
-- รับเหรียญทอง
elseif finishTime >= 5 and <= 10 then
-- รับเหรียญเงิน
elseif finishTime > 10 and <= 15 then
-- รับเหรียญทองแดง
end

เมื่อคำสั่ง if/then ทำงาน มันจะเริ่มจากด้านบนและจะทำงานโค้ดสำหรับเงื่อนไขที่เป็นจริง แรกสุด ที่มันค้นพบ

ตั้งค่าเส้นทางการแข่ง

เริ่มต้นโดยการวางจุดเริ่มต้นของหลักสูตรและเส้นชัย จากนั้นสร้างสคริปต์เพื่อตั้งเวลาให้ผู้เล่นและมอบเหรียญรางวัลที่แตกต่างกัน

  1. สร้างส่วนที่ยึดชื่อ FinishLine เพื่อให้การทดสอบเร็วขึ้น วางจุดเริ่มต้นและสิ้นสุดใกล้กัน คุณสามารถเคลื่อนเส้นชัยได้หลังจากเสร็จสิ้นสคริปต์

    ส่วนเสร็จสิ้น
    หลักสูตรทั้งหมด
  2. ใน FinishLine ให้แทรกสคริปต์ชื่อ RaceManager จากนั้นเพิ่มตัวแปรหนึ่งตัวเพื่อเก็บจำนวนวินาทีที่ผ่านไปนับตั้งแต่เริ่มการแข่งขัน และตัวแปรที่สองเพื่ออ้างอิงถึง FinishLine


    local finishLine = script.Parent
    local timePassed = 0
  3. สร้างฟังก์ชันชื่อ finish().


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. ทำด้วยตัวเอง:

    • เขียนฟังก์ชันชื่อ partTouched() ที่เรียกใช้ finish() เมื่อผู้เล่นสัมผัสมัน
    • เชื่อมโยงส่วนเส้นชัยกับ partTouched()
    • เปรียบเทียบโค้ดของคุณกับตัวอย่างด้านล่าง

    local function finish()
    print("สัมผัสเส้นชัยแล้ว")
    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. ทดสอบเล่นและตรวจสอบว่า finish() ถูกเรียกเมื่อคุณสัมผัสเส้นชัย

ป้องกันไม่ให้ finish() ทำงานซ้ำ

ตอนนี้ ทุกครั้งที่ผู้เล่นสัมผัสเส้นชัย finish() จะถูกเรียกซ้ำไปเรื่อยๆ ตราบใดที่ผู้เล่นสัมผัสส่วนนี้

ใช้ boolean ซึ่งเป็นตัวแปรที่เก็บค่าจริงหรือเท็จ เพื่อให้แน่ใจว่า finish() จะถูกเรียกเพียงครั้งเดียว

  1. สร้างตัวแปรใหม่ชื่อ raceActive และตั้งค่าเป็น true


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- ทำงานทุกครั้งที่ผู้เล่นสัมผัสส่วนเส้นชัย
    local function finish()
  2. เพิ่มเงื่อนไขที่สองในคำสั่ง if เพื่อตรวจสอบว่า raceActive เป็นจริงก่อนที่จะเรียกใช้ finish()


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. เพื่อหยุด finish() จากการถูกเรียกอีกครั้ง ให้ตั้งค่า raceActive เป็น false


    local function finish()
    print("สัมผัสเส้นชัยแล้ว")
    raceActive = false
    end
  4. ทดสอบเล่นประสบการณ์ของคุณเพื่อตรวจสอบว่า คุณเห็นข้อความทดสอบของคุณเพียงครั้งเดียว

ติดตามเวลา

เหมือนกับคำสั่ง if ลูป while ยังสามารถใช้เงื่อนไขเพื่อตรวจสอบว่ามันควรทำงานหรือไม่ เพื่อเวลาผู้เล่น ให้สร้างตัวจับเวลาโดยใช้ลูป while true do ที่ทำงานเฉพาะเมื่อ boolean raceActive เป็นจริง

  1. ที่ด้านล่างของสคริปต์ ให้พิมพ์ while raceActive == true do กด Enter เพื่อเติมอัตโนมัติและเพิ่ม end


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. เพื่อติดตามผู้เล่นในลูป ให้เพิ่ม 1 ลงในตัวแปร timePassed ทุกๆ วินาที รวมถึงคำสั่งพิมพ์เพื่อทดสอบงานของคุณ


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. ทดสอบเล่นประสบการณ์และตรวจสอบว่าคุณเห็นแต่ละวินาทีที่แสดงในหน้าต่าง Output

มอบเหรียญรางวัลให้ผู้เล่น

เพื่อให้เสร็จสิ้น ให้ใช้คำสั่ง if พร้อมเงื่อนไขหลายประการเพื่อมอบเหรียญรางวัลที่แตกต่างกันให้กับผู้เล่นตามผลงานของพวกเขา ใช้คำสั่ง if และสองคำสั่ง elseif เพื่อตรวจสอบเวลาเสร็จสิ้นของผู้เล่นและมอบเหรียญที่ถูกต้องให้กับพวกเขา

  1. เพื่อยืนยันว่าเหรียญแต่ละเหรียญสามารถมอบให้ได้ ใช้คำสั่งพิมพ์


    local function finish()
    raceActive = false
    print("คุณเสร็จสิ้นใน " .. timePassed)
    end
  2. เพื่อมอบเหรียญทอง ให้เขียนคำสั่ง if ที่เปรียบเทียบ timePassed กับเวลาเสร็จสิ้นที่ต้องการ ตัวอย่างนี้ตรวจสอบว่าผลงานของผู้เล่นน้อยกว่าหรือเท่ากับ 10 วินาทีหรือไม่


    local function finish()
    raceActive = false
    print("คุณเสร็จสิ้นใน " .. timePassed)
    if timePassed <= 10 then
    print("คุณได้รับเหรียญทอง!")
    end
    end
  3. ทดสอบเล่นและยืนยันว่าเหรียญทองสามารถมอบให้ได้

เพิ่มเงื่อนไขเพิ่มเติม

ตอนนี้ที่คุณได้ทดสอบเหรียญทองแล้ว เขียนเงื่อนไขสำหรับเหรียญอื่นๆ โดยใช้คำสำคัญ elseif

  1. สำหรับเหรียญเงิน ให้ใช้ elseif และช่วงเวลาที่ต้องการถัดไป ในตัวอย่างนี้ ช่วงคือมากกว่า 10 วินาทีแต่ไม่เกิน 20 วินาที


    local function finish()
    raceActive = false
    print("คุณเสร็จสิ้นใน " .. timePassed)
    if timePassed <= 10 then
    print("คุณได้รับเหรียญทอง!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("คุณได้รับเหรียญเงิน!")
    end
    end
  2. ใช้รูปแบบเดียวกันสำหรับเหรียญทองแดง ตรวจสอบโค้ดของคุณกับตัวอย่างด้านล่าง


    local function finish()
    raceActive = false
    print("คุณเสร็จสิ้นใน " .. timePassed)
    if timePassed <= 10 then
    print("คุณได้รับเหรียญทอง!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("คุณได้รับเหรียญเงิน!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("คุณได้รับเหรียญทองแดง!")
    end
    end
  3. ทดสอบเล่นสำหรับเหรียญเงินและทองแดง

เคล็ดลับการแก้ปัญหา

หากคุณไม่เห็นเหรียญเงินและทองแดงปรากฏขึ้น ให้ลองทำตามสิ่งที่กล่าวมาด้านล่าง

  • ทุก elseif ควรมี then หลังเงื่อนไขของมัน
  • ใน partTouched() ให้แน่ใจว่าเงื่อนไขที่สองของคำสั่ง if ใช้ == เช่นใน raceActive == true
  • ตรวจสอบว่าแต่ละ elseif อยู่ในขอบเขต เงื่อนไข elseif ต้องอยู่ระหว่างบรรทัดแรกของคำสั่ง if/then และ end สุดท้าย

เพิ่มเงื่อนไข else

หากผู้เล่นไม่ได้รับเหรียญใดๆ คุณควรให้กำลังใจพวกเขาให้พยายามอีกครั้ง ในกรณีนี้ คุณสามารถใช้คำสั่ง else ซึ่งจะทำงานเมื่อ ไม่มีเงื่อนไขอื่นๆ เป็นจริง เพื่อนำเสนอข้อความให้พวกเขา

  1. ใต้ elseif สุดท้ายและเหนือ end เริ่มบรรทัดใหม่และพิมพ์ else ห้าม เพิ่ม then ใต้ else ให้ใช้คำสั่งพิมพ์เพื่อกระตุ้นให้พวกเขาลองอีกครั้ง


    local function finish()
    raceActive = false
    print("คุณเสร็จสิ้นใน " .. timePassed)
    if timePassed <= 10 then
    print("คุณได้รับเหรียญทอง!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("คุณได้รับเหรียญเงิน!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("คุณได้รับเหรียญทองแดง!")
    else
    print("ลองอีกครั้ง!")
    end
    end
  2. ทดสอบเล่นเพื่อดูข้อความ else

สรุป

โครงสร้างการควบคุมสามารถมีหลายสถานการณ์ ใช้คำสั่ง if เพื่อสร้างคำสั่งเบื้องต้นในการตรวจสอบ จากนั้นเพิ่มเงื่อนไข elseif ตามจำเป็น สุดท้ายใช้ else เพื่อระบุสิ่งที่จะเกิดขึ้นหากเงื่อนไขทั้งหมดเป็นเท็จ

เริ่มต้นจากด้านบน ทุกเงื่อนไขจะถูกตรวจสอบ และเฉพาะเงื่อนไขที่เป็นจริงในลำดับแรกจะทำงานโค้ด เงื่อนไขที่เหลือจะไม่ได้รับการตรวจสอบ หรือรหัสของพวกเขาจะไม่ทำงาน

หลังจากเสร็จสิ้นโปรเจ็กต์ คุณสามารถขยายสคริปต์เพื่อเพิ่มองค์ประกอบใหม่ในหลายวิธีเพิ่มเติม

  • เพิ่มโค้ดเพื่อให้ผู้เล่นสามารถทำการแข่งขันซ้ำได้โดยการสัมผัสเส้นเริ่มต้นเมื่อพวกเขาเสร็จสิ้น
  • ออกแบบวิธีในการแสดงเวลาในระหว่างการแข่งขัน คุณสามารถแสดงเวลาในองค์ประกอบโดยใช้ Surface GUI เช่นใน สร้างสะพานตามเวลา
สคริปต์ที่เสร็จสมบูรณ์

local timePassed = 0
local finishLine = script.Parent
-- ใช้เพื่อป้องกันไม่ให้ finish() และตัวจับเวลาทำซ้ำเมื่อการแข่งขันสิ้นสุด
local raceActive = true
-- ทำงานเมื่อผู้เล่นสัมผัสเส้นชัยและแสดงรางวัลให้พวกเขา
local function finish()
raceActive = false
print("คุณเสร็จสิ้นใน " .. timePassed)
if timePassed <= 10 then
print("คุณได้รับเหรียญทอง!")
elseif timePassed > 10 and timePassed <= 20 then
print("คุณได้รับเหรียญเงิน!")
elseif timePassed > 20 and timePassed <= 30 then
print("คุณได้รับเหรียญทองแดง!")
else
print("ลองอีกครั้ง!")
end
end
-- ตรวจสอบว่าผู้เล่นสัมผัสส่วนเมื่อการแข่งขันกำลังทำงาน
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)
-- ติดตามเวลาในการแข่งขันในขณะที่การแข่งขันกำลังทำงาน ต้องอยู่ที่ด้านล่างของสคริปต์
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ