الأزواج و الأزواج المرتبة

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

تحتاج العديد من السكريبتات في كثير من الأحيان إلى التنقل عبر القواميس أو المصفوفات. لكن في بعض الأحيان، قد لا تعرف بداية ونهاية هذه الهياكل البيانية. على سبيل المثال، قد يتغير قاموس اللاعبين، أو قد يكون لدى اللاعبين مصفوفة جرد بحجوم متنوعة.

في هذه الحالات، يمكنك استخدام pairs() و ipairs(). يمكن استخدامهما مع حلقة for للتنقل عبر كل عنصر دون معرفة نقاط البداية والنهاية.

ستغطي هذه المقالة استخدامهما، وسنقدم مثالًا عمليًا لسكريبت حيث تتتبع طلبات المطعم في لعبة الطبخ.

القواميس و pairs()

تُستخدم pairs() مع القواميس. مثال على ذلك موضح أدناه.


local myDictionary = {
["اللاعب الأزرق"] = "آنا",
["اللاعب الذهبي"] = "بين",
["اللاعب الأحمر"] = "كاتي",
}
for key, value in pairs(myDictionary) do
print(key .. " هو " .. value)
end

يمكن استخدام pairs() للعمل مع مفتاح عنصر القاموس، أو القيمة، أو كلاهما. في حلقة for أدناه، المتغير الأول هو المفتاح. المتغير الثاني هو القيمة. يتم تمرير القاموس الذي تريد العمل معه إلى pairs().


local inventory = {
["طوب ذهبي"] = 43,
جزرات = 3,
مشاعل = 2,
}
print("لديك:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

عند التنفيذ، سيطبع الكود ما يلي:


لديك:
43 طوب ذهبي
3 جزرات
2 مشاعل

المصفوفات و ipairs()

تُستخدم ipairs() مع المصفوفات. تشير "i" في ipairs() إلى "الفهرس". استخدم ipairs() والمصفوفات معًا في حلقة for للعمل مع القيم المرتبة مثل قوائم المتصدرين. مثال على ذلك موضح أدناه.


local players = {"علي", "بن", "كامي"}
for playerRank, playerName in ipairs(players) do
print("الفائز #" .. playerRank .. " هو " .. playerName)
end

عند التنفيذ، سيطبع الكود ما يلي:


الفائز #1 هو علي
الفائز #2 هو بن
الفائز #3 هو كامي

ممارسة - محاكي حساء المطعم

دعنا نصنع بعض الحساء لمحاكي مطعم حيث يختار اللاعبون من قائمة بالمكونات المحتملة للحساء. سيتم تخزين المكونات كمفاتيح، وستبدأ القيم كقيم خاطئة حتى يحصل اللاعبون فقط على ما يختارونه.

استخدم pairs() لرؤية ما تم اختياره، ثم ipairs() لطباعة قائمة المكونات.

  1. أنشئ قاموس جديد باسم menu. أضف من 3 إلى 5 أزواج من المفاتيح والقيم حيث يكون المفتاح هو المكون والقيمة صحيحة.


    local menu = {
    كرنب = false,
    لحم = false,
    طماطم = 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. إذا كان موجودًا، اطبع "لقد طلبت حساءً مع: ".
    • استخدم ipairs() للتنقل عبر مصفوفة selectedIngredients واطبع كل مكون.
    • اختبر ذلك عن طريق تغيير عنصر قائمة واحد على الأقل إلى صحيح.

    -- يطبع طلب الحساء من "selectedIngredients"
    if #selectedIngredients > 0 then
    print("لقد طلبت حساءً مع: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. في العبارة الشرطية التي تتحقق من وجود عنصر قائمة، أضف شرط else يخبر العملاء إذا لم يتم اختيار أي مكونات.


    if #selectedIngredients > 0 then
    print("لقد طلبت حساءً مع: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("لم يتم اختيار أي شيء. هل أنت غير جائع؟")
    end

تحديات اختيارية

فيما يلي بعض التحديات التي تنطبق باستخدام pairs و ipairs بطرق مختلفة. حاول معرفة ما إذا كان يمكنك بناء الكود لهذه.

تحدي: إنشاء NPC نادل بدلاً من استخدام نافذة الإخراج، استخدم NPC من مقدمة إلى المصفوفات لإنشاء نادل لأخذ طلبات العملاء.

تحدي: السماح للاعبين بوضع الطلبات سمح للاعبين باختيار مكون من خلال لمس جزء مادي مثل مطالبة القرب. لمزيد من المعلومات، انظر مطالبات القرب.

تحدي متقدم: اجعلني أصنع حساء أنشئ محاكي مطعم حيث يكون اللاعبون هم الطهاة! سيتعين على اللاعبين وضع المكونات معًا لتتناسب مع الطلب المقدم لهم من قبل النادل.

  1. أنشئ دعاوى في اللعبة لـ 3 - 5 مكونات مختلفة.
  2. أنشئ 3 - 5 وصفات باستخدام القواميس مشابهة لتلك الموجودة في هذا الدرس.
  3. أنشئ مصفوفة تحتوي على جميع الوصفات.
  4. اختر وصفة عشوائية واستخدم NPC ليخبر اللاعبين ما هي المكونات.
  5. أنشئ قاموسًا جديدًا لصنع وصفة استنادًا إلى أي مكونات من الدعائم التي يلمسها اللاعب.
  6. قارن وصفة اللاعب مع الوصفة التي اختارها NPC.
  7. زِد من التحدي بإضافة شرط إضافي، مثل مؤقت.
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.