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

*เนื้อหานี้แปลโดยใช้ 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 ซึ่งเป็นตัวแปรที่เก็บค่า true หรือ false เพื่อให้แน่ใจว่า 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 ทุก ๆ วินาที รวมถึงคำสั่ง print เพื่อตรวจสอบการทำงานของคุณ

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

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

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

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

    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 ให้ใช้คำสั่ง print เพื่อกระตุ้นให้พวกเขาลองอีกครั้ง

    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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ