คู่และ ipairs

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

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

ในสถานการณ์เหล่านี้ คุณสามารถใช้ pairs() และ ipairs() ได้สิ่งเหล่านี้สามารถใช้กับลูป for เพื่อผ่านแต่ละองค์ประกอบโดยไม่มีจุดเริ่มต้นและจุดสิ้นสุดที่รู้จัก

บทความนี้จะครอบคลุมการใช้งานและมีตัวอย่างสคริปต์ที่เป็นประโยชน์ที่คุณติดตามคำสั่งร้านอาหารในเกมการปรุงอาหาร

สารานุกรมและคู่()

pairs() ใช้กับ สารานุกรม ตัวอย่างอยู่ด้านล่าง


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " is " .. value)
end

pairs() สามารถใช้เพื่อทำงานกับกุญแจ ค่า หรือทั้งสองอย่างขององค์ประกอบสารานุกรมในลูป for ด้านล่าง ตัวแปรแรกคือกุญแจตัวแปรที่สองคือมูลค่าสารานุกรมที่คุณต้องการทำงานร่วมกับถูกส่งไปที่ pairs()


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

กำลังติดตาม:


You have:
43 Gold Bricks
3 Carrots
2 Torches

เลขคู่และ ipairs()

ipairs() ใช้กับ เวกเตอร์ .ตัว "i" ใน ipairs() ยืนหมายถึง "ดัชนี" ใช้ ipairs() และ arrays รวมกับลูป for เพื่อทำงานกับค่าที่จัดเรียงเช่นลีดเดอร์บอร์ดตัวอย่างอยู่ด้านล่าง


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Winner #" .. playerRank .. " is " .. playerName)
end

กำลังติดตาม:


Winner #1 is Ali
Winner #2 is Ben
Winner #3 is Cammy

ฝึกซ้อม - โซดาซิมูเลเตอร์ร้านอาหาร

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

ใช้ pairs() เพื่อดูสิ่งที่ถูกเลือกแล้ว ipairs() เพื่อพิมพ์รายการส่วนผสม

  1. สร้างสารานุกรมใหม่ ชื่อว่า menu โดยเพิ่มคู่คีย์-ค่า 3 - 5 คู่ที่คีย์เป็นส่วนประกอบและค่าเป็นเท็จ


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. ใต้สารบัญเมนูเพิ่ม แอร์รี่ว่างเปล่า ซึ่งจะถูกเติมด้วยตัวเลือกของลูกค้าในภายหลัง


    -- ซุปของลูกค้า
    local selectedIngredients = {}
  3. ใช้ pairs() เพื่อตรวจสอบว่าแต่ละส่วนประกอบในสารานุกรมถูกทําเครื่องหมายเป็นจริงหรือเท็จ หากเป็นจริงให้เพิ่มส่วนประกอบลงในซุป


    -- ซุปของลูกค้า
    local selectedIngredients = {}
    -- เพิ่มตัวเลือกของลูกค้าให้กับซุปของพวกเขา
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. ทำซ้ำคำสั่งให้กลับไปยังลูกค้า ในสคริปต์ให้โค้ดต่อไปนี้

    • ตรวจสอบว่ามีรายการเมนูใน selectedIngredients หรือไม่ หากมีให้พิมพ์ "You ordered soup with: "
    • ใช้ ipairs() เพื่อผ่านทาง selectedIngredients คอลเลกชันและพิมพ์แต่ละส่วนประกอบ
    • ทดสอบโดยเปลี่ยนอย่างน้อยหนึ่งรายการเมนูเป็นจริง

    -- พิมพ์คำสั่งซื้อซุปจาก "ส่วนผสมที่เลือก"
    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. ในข้อความ if ไอเท็มเพิ่มเงื่อนไขอื่นที่บอกลูกค้าว่าไม่มีส่วนผสมที่เลือก


    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Nothing was selected. Are you not hungry?")
    end

ความท้าทายเสริมเติมตัวเลือก

ด้านล่างนี้เป็นความท้าทายบางอย่างที่ใช้คู่และไอพาร์ในรูปแบบที่แตกต่างกัน ลองดูว่าคุณสามารถสร้างโค้ดสำหรับพวกเขาได้หรือไม่ ความท้าทาย : สร้าง NPC ผู้รับใช้แทนที่จะใช้หน้าต่างออกผล ใช้ NPC จาก Intro To Arrays เพื่อสร้างผู้รับใช้เพื่อรับคำสั่งลูกค้า ความท้าทาย : อนุญาตให้ผู้เล่นสั่งซื้อ อนุญาตให้ผู้เล่นเลือกส่วนผสมโดยแตะส่วนประกอบทางกายภาพเช่นการแจ้งเตือนระยะไกลสำหรับข้อมูลเพิ่มเติม ดู คําแนะนําระยะไกล ความท้าทายขั้นสูง : สร้างจำลองร้านอาหารที่ผู้เล่นเป็นเชฟ! ผู้เล่นจะต้องรวบรวมส่วนผสมให้ตรงกับคำสั่งที่พวกเขาได้รับจากพนักงานเสิร์ฟ

  1. สร้างของใช้ในเกมสำหรับ 3 - 5 ส่วนผสมที่แตกต่างกัน
  2. สร้างสูตร 3 - 5 โดยใช้สารานุกรมที่คล้ายกับในบทเรียนนี้
  3. สร้าง阵列ที่บรรจุสูตรทั้งหมด
  4. สุ่มเลือกสูตรและใช้ NPC เพื่อบอกผู้เล่นว่าส่วนผสมคืออะไร
  5. สร้างสารานุกรมใหม่เพื่อสร้างสูตรที่ขึ้นอยู่กับส่วนผสมของโปรเพลย์ที่ผู้ใช้แตะ
  6. เปรียบเทียบสูตรของผู้เล่นกับสูตรที่เลือกโดย NPC
  7. เพิ่มความท้าทายโดยการเพิ่มเงื่อนไขเพิ่มเติม เช่น ตัวจับเวลา