บทที่ 2: การใช้สคริปต์ขั้นสูงด้วยภาษา Lua
ในบทเรียนนี้ นักเรียนจะได้เรียนรู้การใช้ฟังก์ชันขั้นสูงในภาษา Lua เพื่อเพิ่มความสามารถและความซับซ้อนในการพัฒนาเกม Roblox ซึ่งประกอบไปด้วยการสร้างฟังก์ชัน, การใช้เงื่อนไขซ้อน (Nested Conditions), และการวนซ้ำที่ซับซ้อนมากขึ้น
2.1 การใช้ฟังก์ชันขั้นสูง (Advanced Functions)
ฟังก์ชัน (Functions) ใน Lua เป็นส่วนสำคัญในการจัดการโค้ด ทำให้สามารถเรียกใช้ซ้ำได้ในหลายที่ นอกจากนี้ยังสามารถรับค่าเข้า (Parameters) และส่งค่ากลับ (Return Values) ได้ เพื่อความยืดหยุ่นในการทำงาน
ตัวอย่าง:
function greetPlayer(name)
return "Hello, " .. name .. "!"
end
local message = greetPlayer("Josh")
print(message) -- แสดง "Hello, Josh!"
ในตัวอย่างนี้ ฟังก์ชัน greetPlayer ถูกสร้างขึ้นเพื่อรับค่า name และส่งข้อความทักทายกลับมา โดยที่ผลลัพธ์ถูกเก็บในตัวแปร message
2.1.1 การใช้ฟังก์ชันร่วมกับตัวแปรหลายค่า
ฟังก์ชันสามารถรับค่าหลายค่าและส่งค่าหลายค่าได้ ซึ่งมีประโยชน์ในการคำนวณหรือจัดการข้อมูลหลาย ๆ ค่าในคราวเดียว
ตัวอย่าง:
function addAndMultiply(a, b)
local sum = a + b
local product = a * b
return sum, product
end
local total, result = addAndMultiply(3, 4)
print("Sum:", total) -- แสดงผลรวม
print("Product:", result) -- แสดงผลคูณ
ในตัวอย่างนี้ ฟังก์ชัน addAndMultiply จะคำนวณผลรวมและผลคูณของค่าที่ได้รับ และส่งคืนทั้งสองค่า
2.2 การใช้เงื่อนไขซ้อน (Nested Conditions)
การใช้เงื่อนไขแบบซ้อน (Nested Conditions) ช่วยให้เราสามารถจัดการกับสถานการณ์ที่ซับซ้อนในเกมได้ เช่น การตรวจสอบหลายเงื่อนไขพร้อมกันเพื่อกำหนดพฤติกรรมของตัวละครหรือวัตถุในเกม
ตัวอย่าง:
local playerHealth = 50
local playerArmor = 30
if playerHealth > 0 then
if playerArmor > 0 then
print("Player is protected")
else
print("Player has no armor")
end
else
print("Player is dead")
end
ในตัวอย่างนี้ เราใช้เงื่อนไขซ้อนเพื่อเช็คสถานะสุขภาพ (Health) และเกราะ (Armor) ของผู้เล่น หากผู้เล่นมีสุขภาพมากกว่า 0 แต่ไม่มีเกราะ ระบบจะแสดงข้อความ "Player has no armor"
2.2.1 การใช้เงื่อนไขหลายระดับ
นอกจากการใช้เงื่อนไขซ้อน เรายังสามารถใช้คำสั่ง else if เพื่อจัดการกับหลายเงื่อนไขได้
ตัวอย่าง:
local playerScore = 85
if playerScore >= 90 then
print("Excellent!")
elseif playerScore >= 75 then
print("Good job!")
else
print("Keep trying!")
end
ในตัวอย่างนี้ หากคะแนนของผู้เล่นอยู่ระหว่าง 75 ถึง 90 จะแสดงข้อความ "Good job!" หากสูงกว่า 90 จะแสดง "Excellent!"
2.3 การวนซ้ำขั้นสูง (Advanced Loops)
การวนซ้ำ (Loops) เป็นโครงสร้างที่สำคัญในการประมวลผลข้อมูลที่ต้องทำซ้ำหลายครั้ง เช่น การทำให้ตัวละครเดินผ่านหลายจุดในแผนที่ หรือการตรวจสอบสถานะของวัตถุหลาย ๆ ชิ้น
2.3.1 การใช้การวนซ้ำแบบ For
การใช้การวนซ้ำแบบ for ช่วยให้สามารถกำหนดจำนวนรอบในการวนซ้ำได้อย่างแม่นยำ
ตัวอย่าง:
for i = 1, 5 do
print("This is loop number: " .. i)
end
ในตัวอย่างนี้ การวนซ้ำจะทำงาน 5 ครั้ง และจะแสดงข้อความ "This is loop number" พร้อมด้วยหมายเลขรอบในแต่ละครั้ง
2.3.2 การวนซ้ำผ่านตาราง (Iterating Over Tables)
การใช้ pairs() และ ipairs() ช่วยให้เราสามารถวนซ้ำผ่านข้อมูลใน Tables ได้ เช่น การแสดงไอเท็มทั้งหมดที่ผู้เล่นเก็บได้
ตัวอย่าง:
local items = {"Sword", "Shield", "Potion"}
for index, item in ipairs(items) do
print("Item " .. index .. ": " .. item)
end
ในตัวอย่างนี้ เราใช้ ipairs() เพื่อวนซ้ำแสดงรายการไอเท็มทั้งหมดที่อยู่ในตาราง items
2.3.3 การหยุดการวนซ้ำ (Breaking Loops)
บางครั้งเราอาจต้องการหยุดการวนซ้ำก่อนที่การวนซ้ำจะเสร็จสิ้น โดยใช้คำสั่ง break เพื่อหยุดการวนซ้ำ
ตัวอย่าง:
for i = 1, 10 do
if i == 5 then
break -- หยุดการวนซ้ำเมื่อ i เท่ากับ 5
end
print(i)
end
ในตัวอย่างนี้ การวนซ้ำจะหยุดเมื่อค่า i มีค่าเท่ากับ 5
ในบทเรียนนี้ นักเรียนได้เรียนรู้การใช้ฟังก์ชันขั้นสูง การใช้เงื่อนไขแบบซ้อน และการวนซ้ำขั้นสูง ซึ่งเป็นทักษะสำคัญในการเขียนสคริปต์ที่ซับซ้อนขึ้นในเกม Roblox การเข้าใจการทำงานของฟังก์ชัน การจัดการเงื่อนไขหลายระดับ และการวนซ้ำในข้อมูลจำนวนมาก จะช่วยให้นักเรียนสามารถพัฒนาเกมที่มีโครงสร้างการทำงานที่มีประสิทธิภาพและยืดหยุ่นมากขึ้น