บทที่ 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 การเข้าใจการทำงานของฟังก์ชัน การจัดการเงื่อนไขหลายระดับ และการวนซ้ำในข้อมูลจำนวนมาก จะช่วยให้นักเรียนสามารถพัฒนาเกมที่มีโครงสร้างการทำงานที่มีประสิทธิภาพและยืดหยุ่นมากขึ้น


Free Joomla templates by Ltheme