หลายสิ่งในวิทยาการคอมพิวเตอร์หรือการพัฒนาเกมมักจะทำซ้ำ สำหรับตัวอย่าง แอปพลิเคชันอาจจะอัพเดตเนื้อหาในฟีดทุกไม่กี่วินาที หรือเกมอาจจะให้รางวัลผู้เล่นทุกวันที่เข้าเกม เพื่อให้บรรลุถึงพฤติกรรมนี้ นักพัฒนาจึงมักใช้งาน ลูป
ในวิทยาการคอมพิวเตอร์ ลูป เป็นรูปแบบการเขียนโค้ดที่ทำซ้ำชุดคำสั่ง โดยมักจะทำซ้ำจนกว่าจะมีเงื่อนไขเฉพาะที่ครบถ้วน ในการฝึกฝนนี้ คุณจะเขียนโค้ดส่วนที่เปลี่ยนสีไปเรื่อยๆ ในบทเรียนถัดไปจะอธิบายวิธีการหยุดการทำงานของลูป
ตั้งค่าส่วนและสคริปต์
ใช้โปรเจ็กต์ Roblox ใดก็ได้สำหรับการฝึกนี้ เมื่อลงเสร็จแล้ว ส่วนนี้สามารถใช้เป็นวิธีการตกแต่งสภาพแวดล้อม
สร้างส่วนใหม่ที่มีชื่อที่บรรยายรายละเอียด บทเรียนนี้ใช้ LoopingPart
ใน ServerScriptService เพิ่มสคริปต์ใหม่ชื่อ LoopingScript
ในสคริปต์ ลบ Hello World และเขียน คอมเมนต์ ระบุวัตถุประสงค์ของสคริปต์นี้
-- เปลี่ยนสีของ LoopingPart ทุกๆ ไม่กี่วินาที
ใช้ตัวแปรเพื่อเก็บส่วน
ตัวแปรสามารถเก็บการอ้างอิงไปยังวัตถุอื่นๆ นอกจากสตริงได้ ตัวอย่างเช่น เมื่อสคริปต์รู้การอ้างอิงไปยังส่วน สคริปต์สามารถเปลี่ยนแปลงมันได้
แทนที่จะพิมพ์ workspace.NameOfYourPart ซ้ำๆ บรรทัดทั้งหมดสามารถเก็บไว้ภายในตัวแปรท้องถิ่น ตัวแปรท้องถิ่นถูกสร้างขึ้นโดยการพิมพ์ local จากนั้นตามด้วยชื่อของตัวแปร
ตัวอย่างเช่น: local nameOfVariable
ใต้คอมเมนต์ สร้างตัวแปรท้องถิ่นโดยการพิมพ์ local loopingPart
-- เปลี่ยนสีของ LoopingPart ทุกๆ ไม่กี่วินาทีlocal loopingPartตั้งค่าตัวแปรเป็นส่วนลูปโดยการพิมพ์ = workspace.LoopingPart ในบรรทัดเดียวกัน จำไว้ว่าตัวดำเนินการ = จะตั้งค่าค่าของตัวแปรเป็นสิ่งที่อยู่ทางขวาของมัน
-- เปลี่ยนสีของ LoopingPart ทุกๆ ไม่กี่วินาทีlocal loopingPart = workspace.LoopingPart
ลูป while
ก่อนจะสร้างลูป while สำหรับส่วนที่เปลี่ยนสี ควรอธิบายไวยากรณ์ของมันก่อน ลูป while มีสามส่วนประกอบ:
- คำสำคัญ while
- เงื่อนไข ซึ่งจะอยู่หลังคำสำคัญเสมอ
- คำสั่ง ซึ่งอยู่ระหว่างคำว่า do และ end
ในลูป เงื่อนไขสามารถเป็นคำแถลงเชิงตรรกะที่หลากหลาย บางตัวอย่างอาจเป็นถ้าหมายเลขสองหมายเลขเท่ากัน ลูปจะทำงานหากเงื่อนไขเป็นจริง
สังเกตในตัวอย่างด้านล่าง เงื่อนไขเป็นจริง ซึ่งหมายความว่าลูปนี้จะทำงานตลอดไป ในบทเรียนถัดไป คุณจะเขียนโค้ดเงื่อนไขเฉพาะที่หยุด
while true doprint("ลูปนี้กำลังทำงาน")end
เขียนโค้ดลูป while
ถัดไป คุณจะตั้งค่าลูป while สำหรับส่วนที่เปลี่ยนสี
ในบรรทัดถัดไปพิมพ์ while true do จากนั้นกด Enter เพื่อเติมและเพิ่มคำว่า end
-- เปลี่ยนสีของ loopingPart ทุกๆ ไม่กี่วินาทีlocal loopingPart = workspace.LoopingPart-- โค้ดลูปwhile true doend
เพิ่มโค้ดในลูป
เมื่อได้สร้างลูป while เรียบร้อย สั่งการก็สามารถถูกเพิ่มเข้าไปเพื่อเปลี่ยนสีของส่วนตามเวลา ภายในลูป เพิ่มบรรทัดของโค้ดสำหรับแต่ละสี แต่ละสีจะใช้ค่าของ RGB ซึ่งเป็นวิธีในการเก็บสีในรูปแบบตัวเลขในวิทยาการคอมพิวเตอร์
ระหว่าง while true do และ end ตั้งค่าคุณสมบัติสีของส่วนเป็น Color3.fromRGB()
local loopingPart = workspace.LoopingPartwhile true doloopingPart.Color = Color3.fromRGB()endการตั้งค่าสีสามารถทำได้โดยใช้เครื่องเลือกสีใน Studio หากต้องการทำให้ทำโดยคลิกซ้ายภายใน () ถัดจาก fromRGB จากนั้นคลิกที่ไอคอนวงล้อสี เมื่อได้สีที่ต้องการแล้ว ให้กด OK เพื่อเพิ่มค่าสีในโค้ดอัตโนมัติ
local loopingPart = workspace.LoopingPartwhile true doloopingPart.Color = Color3.fromRGB(82, 227, 255)end
ทำให้สคริปต์รอ
หากคุณเพิ่มบรรทัดที่สองของโค้ดเปลี่ยนสีในขณะนี้ สีของอิฐจะเปลี่ยนเร็วเกินไปจนคุณอาจจะไม่เห็นสีแรกได้เลย หากต้องการให้สคริปต์รอก่อนที่จะทำการรันบรรทัดถัดไปของโค้ด ให้ใช้ฟังก์ชัน task.wait()
ในบรรทัดหลังจากการเปลี่ยนสีของอิฐ พิมพ์ task.wait(3) หมายเลขใดๆ ที่ใส่ภายใน () คือจำนวนนับว่าวินาทีที่สคริปต์จะรอ
local loopingPart = workspace.LoopingPartwhile true doloopingPart.Color = Color3.fromRGB(82, 227, 255)task.wait(3)endใต้ฟังก์ชัน wait ทำซ้ำการเพิ่มสีใหม่ตามกระบวนการเดียวกัน เสร็จสิ้นด้วยฟังก์ชัน wait เพิ่มเติม
while true doloopingPart.Color = Color3.fromRGB(82, 227, 255)task.wait(3)loopingPart.Color = Color3.fromRGB(177, 52, 255)task.wait(3)endทดสอบโค้ดและดูว่าสีเปลี่ยนแปลงหรือไม่
หมายเหตุการแก้ปัญหา
ในจุดนี้หากส่วนที่เปลี่ยนสีไม่ทำงานตามที่ตั้งใจ ให้ลองทำตามสิ่งต่อไปนี้
ปัญหา: สีถูกข้าม
- ตรวจสอบให้แน่ใจว่าคุณมีฟังก์ชัน wait ระหว่างการเปลี่ยนสีแต่ละสี โดยเฉพาะในบรรทัดสุดท้าย
- ตรวจสอบว่าโค้ดการเปลี่ยนสีและรอทั้งหมดอยู่ระหว่างส่วน while true do และ end
ปัญหา: ส่วนยังคงเป็นสีเทาหรือไม่เปลี่ยนสีตามที่ตั้งใจ
- ตรวจสอบให้แน่ใจว่าทุกค่า RGB มีตัวเลขตั้งแต่ 0 ถึง 255 เป็นจำนวนเต็มหรือทศนิยม และแยกด้วยเครื่องหมายจุลภาค
- หมายเลขภายใน () ของฟังก์ชัน wait ควรมีค่ามากกว่า 1 อาจเป็นไปได้ว่าถ้าการรอมีค่าสั้นเกินไป คุณอาจจะไม่เห็นสีนั้น
สคริปต์ส่วนการทำซ้ำสีก่อน
-- สร้างตัวแปรเพื่อเก็บส่วนlocal loopingPart = workspace.LoopingPart-- โค้ดลูปwhile true do-- เปลี่ยนสีของ loopingPartloopingPart.Color = Color3.fromRGB(82, 227, 255)-- รอ 3 วินาทีก่อนคำสั่งถัดไปtask.wait(3)loopingPart.Color = Color3.fromRGB(177, 52, 255)task.wait(3)end
สรุป
ลูปเป็นองค์ประกอบทั่วไปในภาษาโปรแกรมส่วนใหญ่ ใช้สำหรับทำซ้ำคำสั่ง บางครั้งจนกว่าจะมีเงื่อนไขเฉพาะที่ครบถ้วน ในบทความนี้ ลูป while ถูกใช้เพื่ทำซ้ำคำสั่งตลอดไป เพื่อสร้างลูป while ที่ทำซ้ำตลอดไป ให้ใช้ไวยากรณ์ด้านล่าง โดยจำเป็นต้องรวมคำสั่งระหว่างคำว่า do และ end
while true do-- คำสั่งend