مقدمة إلى القواميس

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

القواميس هي جداول تربط الأسماء أو المفاتيح بقيمة بدلاً من فهرس.

مثال:

بناء جملة قاموس لواء

local pet = {
Name = "بوب",
Type = "كلب",
}

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

بناء جملة القواميس

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


local playerNames = {
player1 = "زاب",
player2 = "كيل",
}
print(playerNames["player1"])

لإشارة إلى الأجزاء أو الكائنات الأخرى كالمفاتيح، استخدم الأقواس.


local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

إنشاء قاموس

استخدام القواميس اليومي هو تنظيم معلومات اللاعب أو الشخصية. تستكشف هذه الخطوات كيفية تخزين معلومات شخصية عدو نظرية والوصول إليها.

  1. في سكريبت جديد، أنشئ قاموسًا باسم enemy.


    local enemy = {
    }
  2. المفتاح الأول في القاموس سيتتبع اسم العدو بواسطة متغير يسمى Name.


    local enemy = {
    Name
    }
  3. عيّن اسم العدو إلى المفتاح، يتبعه فاصلة.


    local enemy = {
    Name = "سبايك",
    }
  4. أضف زوج مفتاح-قيمة ثانٍ لمدى صحة العدو. تذكر، يجب أن تستخدم المفاتيح نفس نوع البيانات دائمًا، لكن القيم يمكن أن تختلف.


    local enemy = {
    Name = "سبايك",
    Health = 1000,
    }

استخدام قيم القاموس

هناك طريقتان للوصول إلى قيم القاموس:

  • tableName["keyName"] (من المهم ملاحظة الاقتباسات)
  • tableName.keyName

local enemy = {
Name = "سبايك",
Health = 1000,
}
print("الشرير " .. enemy["Name"] .. " يقترب!")
print("الشرير " .. enemy.Name .. " يقترب!")

أي أسلوب يجب استخدامه يعتمد عادةً على الغرض من الجدول. بالنسبة للجداول التي تحتوي على مجموعة من القيم مثل قائمة اللاعبين في الخادم، سيستخدم المبرمجون عادةً tableName["keyName"]. بالنسبة لقاموس يستخدم لوصف كائن، من المرجح أن يستخدم المبرمجون tableName.keyName.

تغيير قيمة قاموس

تغيير قيمة مفتاح هو نفس أي متغير آخر؛ استخدم عامل المساواة =.

  1. تحت جدول enemy، اضبط اسم العدو لشيء آخر.


    local enemy = {
    Name = "سبايك",
    Health = 1000,
    }
    enemy.Name = "رنا"
    print("اسم العدو هو " .. enemy.Name)
  2. ابدأ اختبار اللعبة وتحقق من نافذة الإخراج.

المتغيرات الموجودة مسبقًا كمفاتيح

يمكن أن تتفاعل القواميس مع المتغيرات الموجودة مسبقًا المعلنة في أجزاء أخرى من السكريبت. المثال البرمجي التالي يستخدم متغيرًا لإضافة اسم لاعب كمفتاح عندما ينضم إلى التجربة ثم يضبط قيمة نقاطه إلى 0.

  1. في ServerScriptService، أنشئ سكريبت جديد يسمى PlayerPoints. في السكريبت، احصل على خدمة Players وأنشئ قاموسًا فارغًا يسمى playerPoints.


    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. اكود دالة محلية لضبط نقاط اللاعب مع معلمة لمتغير لاعب جديد. اربط الدالة بحدث Players.PlayerAdded.


    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. في الدالة، أضف متغيرًا للحصول على Name اللاعب، وهي خاصية في كل كائن Player، وعبارة طباعة للاختبار.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("مرحبًا " .. name)
    end
  4. أدخل name في قاموس playerPoints كمفتاح، واضبط القيمة، نقاط اللاعب، إلى 0.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("مرحبًا " .. name)
    playerPoints[name] = 0
    end
  5. استخدم name لطباعة اسم اللاعب وplayerPoints[name] لطباعة قيمة المفتاح الذي يطابق المتغير.


    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("مرحبًا " .. name)
    playerPoints[name] = 0
    print(name .. " لديه " .. playerPoints[name] .. " نقاط.")
    end
  6. قم بتشغيل المشروع وراقب الإخراج.

سكريبت منتهي

local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("مرحبًا " .. name)
playerPoints[name] = 0
print(name .. " لديه " .. playerPoints[name] .. " نقاط.")
end
Players.PlayerAdded:Connect(setPoints)

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

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

  • إنشاء جزء فخ يقوم بإحداث الضرر بمرور الوقت للاعب. بمجرد لمس اللاعب للفخ، اصبه بالضرر، انتظر، ثم أعد السماح له بالإصابة مرة أخرى.
  • إنشاء دالة تتحقق من أي من لاعبين لديه أكبر عدد من النقاط عن طريق الوصول إلى قاموس.
  • إنشاء شيفرة، نظام لتبديل سلسلة واحدة بأخرى لإنشاء "رمز سري". على سبيل المثال، يمكن تبديل الحرف "A" بـ "G"، أو يمكن تبديل الكلمة "تفاح" بـ "برتقال".

القواميس و 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 شمعات

الملخص

القواميس هي جداول تستخدم أزواج المفتاح والقيمة بدلاً من القيم المحددة. تبدأ القواميس والمصفوفات بشكل مشابه من خلال تعيين الأقواس المعقوفة إلى متغير. حافظ على فواصل الإدخالات.

يجب أن تستخدم جميع المفاتيح داخل قاموس نفس نوع البيانات، لكن القيم يمكن أن تختلط بأنواع البيانات دون مشكلة.

يمكن أن يوضح كيف يتم الوصول إلى القاموس غرضه. من المحتمل الوصول إلى قاموس خصائص العدو باستخدام عامل النقطة، بينما من المرجح أن تستخدم قائمة الأسماء tableName[keyName].

عند استخدام الأقواس، كن حذرًا؛ يجب معاملة أسماء المفاتيح التي تم إنشاؤها داخل الجدول كسلاسل: tableName["keyName"]. ومع ذلك، عند الإشارة إلى كائنات مثل الأجزاء، لا تحتاج الاقتباسات: tableName[keyName].

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

في هذه الحالات، يمكنك استخدام pairs() و ipairs() في حلقة for للمرور عبر كل عنصر دون معرفة النقاط الابتدائية والنهائية. يمكنك أيضًا استخدام التكرار العام من خلال الكلمة الرئيسية in للدورة خلال العناصر دون الحاجة إلى pairs() أو ipairs().

©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.