Roblox Guidebookقاعدة المعرفة
العربية ⌄

التطوير / ROBLOX

نص التقدم في Luau: افصل العدد عن العبارة

أنشئ عبارة تقدم واضحة، وعالج فشل تحويل النص صراحة، ولا تقارن الكميات المعروضة بوصفها كلمات.

آخر تحديث:

ابدأ بعداد توصيل صغير #

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

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

أنشئ العبارة من الأعداد #

شغّل المثال الأول في مفسر Luau أو برنامج تدريب منفصل. يبقى completed وtotal عددين. تحصل tostring على التمثيل النصي، وتصل النقطتان المتتاليتان الأجزاء. المسافات جزء من النصوص المكتوبة وليست إضافات تلقائية. يجب أن يكون السطر الأول Parcels: 7 / 20 بالكامل، بما في ذلك المسافات الواقعة حول الشرطة المائلة والفاصل بعد الكلمة.

يستخدم السطر التالي string.format والمواضع %d مع العددين الصحيحين نفسيهما، فينتج العبارة ذاتها. لا يغيّر التنسيق قيمة completed. عندما تزيد العداد العددي لاحقاً، ابنِ عبارة جديدة من القيمة الجديدة. لن يتحدث النص المحفوظ سابقاً وحده، وقد يستمر في عرض سبعة رغم تغير العمل المكتمل بالفعل في متغير آخر.

العدد والعبارةافتح الصورة بالحجم الكامل ↗
رسم أصلي: يبقى العدد مستقلاً وتُنشأ العبارة من قيمته الحالية.
local completed = 7
local total = 20
local caption = "Parcels: " .. tostring(completed) .. " / " .. tostring(total)
print(caption)
print(string.format("Parcels: %d / %d", completed, total))

اختر المسافات والكلمات بوضوح #

لا تضيف عملية وصل النصوص فاصلًا بين الأجزاء المتجاورة. وصل Parcels مباشرة بعدد دون نقطتين أو مسافة يجعل القراءة أصعب. احتفظ بالعلامات في قالب واضح بدلاً من توزيعها بين تعليمات غير مترابطة. قارن المخرج كله بالسطر المتوقع، ولا تكتفِ بملاحظة ظهور الرقم، لأن المسافات أيضاً جزء من النتيجة المقصودة.

تناسب مواضع الأعداد الصحيحة هذا التمرين لأن الطرود تُحسب بوحدات كاملة. يحتاج الكسر إلى قاعدة عرض تختارها بصورة مستقلة؛ لا تعِد بأن %d يحافظ على جميع المنازل العشرية. النسب المئوية والتقريب وتغيير الوحدة قرارات لاحقة. حدّد أولاً عبارتها المتوقعة، ثم عدّل المثال وافحصه دون تعميم نتيجة الاختبار القديم عليها.

حوّل نصاً معروفاً مع فحص الفشل #

يبدأ المثال الثاني بالنص "7" الذي حدده المؤلف. تحاول tonumber الحصول على عدد وتعيد nil عند فشل التحويل. يعلن الفرع الصريح الذي يفحص nil أن التقدم غير صالح ويعيد عبارة بديلة. بعد نجاح التحويل تُنشأ العبارة العادية. بهذه الطريقة لا يتحول النص غير الصحيح بصمت إلى صفر يخفي الخطأ عن المراجع.

تستخدم الحالة السلبية "seven". المخرجان هما Invalid progress ثم Parcels: unavailable. لا يمثل التحويل قاعدة اللعبة كاملة: قد يحتاج النظام المستقبلي إلى حدود مسموحة وفحص أن الكمية عدد صحيح. لا يتضمن هذا التمرين إدخالاً من اللاعبين أو عرض رسائل الدردشة. لذلك لا تعتبر هذه المخرجات دليلاً على عمل تلك الأنظمة الأخرى أو صلاحيتها.

فحص التحويلافتح الصورة بالحجم الكامل ↗
رسم تحويل أصلي: تتبع nil فرع فشل صريحاً.
local function progressCaption(raw)
    local completed = tonumber(raw)
    if completed == nil then
        print("Invalid progress")
        return "Parcels: unavailable"
    end
    return string.format("Parcels: %d / %d", completed, 20)
end
print(progressCaption("7"))
print(progressCaption("seven"))

لا ترتب عبارات التقدم كأعداد #

عند مقارنة "100" و"20" كنصين، تطلب ترتيباً نصياً لا مقارنة المقدار العددي. قد يحدد الحرف الأول النتيجة قبل أن تصبح بقية الأرقام مهمة. في هذه الحالة التدريبية تعيد مقارنة النص true، رغم أن العدد 100 أكبر من العدد 20. يكشف هذا الفرق اختيار نوع بيانات غير مناسب قبل توصيل عداد فعلي في المشروع.

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

افصل التحويل عن قواعد اللعبة #

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

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

ترجم العبارة مع ثبات معنى البيانات #

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

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

المدخلالمخرج المتوقع
العددان 7 و20Parcels: 7 / 20
النص 7Parcels: 7 / 20
الكلمة sevenخطأ وعبارة بديلة
النصان 100 و20المقارنة النصية تعيد true

سلّم نتيجة يمكن تكرارها #

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

قبل التوسع راجع أن الحسابات ما زالت تستخدم الأعداد وأن للتحويل الفاشل فرعاً صريحاً وأن العبارة الكاملة تضم الفواصل المطلوبة. حدّد بعد ذلك الخطوة التالية للتوصيل الحقيقي بصورة منفصلة. تؤكد نتيجة وحدة التحكم هذه العمليات النصية؛ لا تؤكد حفظ التقدم أو عرضه للاعبين أو منح مكافأة أو تعديل أي مشروع قائم بالفعل.

السجلما يُسلّم
البياناتcompleted وtotal كأعداد
العبارةالقالب والمخرج الكامل
الفشلفرع nil والنص البديل
التحققالمفسر والمخرج الفعلي

المصادر الأصلية

Roblox — Official documentation