ممارسة الحلقات - إنشاء جسر مؤقت

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

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

إعداد المشروع

يمكن إدراج هذا الجسر في أي مشروع Roblox يحتوي على تحديات قائمة على الحركة، مثل obby.

إنشاء الأجزاء

  1. ابحث عن مكان لبناء جسر، مثل نهر أو فجوة كبيرة في obby. أنشئ ثلاثة أجزاء مُثبتة كما يلي.

    • TimerDisplay
    • Bridge
    • ButtonBridge
  2. عندما يكون غير نشط ، سيكون الجسر شبه شفاف. للقيام بذلك، حدد Bridge وقم بتغيير خصائصه.

    • الشفافية = 0.8
    • CanCollide = False

إنشاء عرض المؤقت

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

  1. حدد TimerDisplay وأضف SurfaceGui. بعد ذلك، أضف TextLabel كطفل لـ Surface Gui.

  2. حدد Surface GUI. في الخصائص، أجرِ التغييرات التالية:

    • قم بتغيير الوجه بحيث يمكنك رؤية علامة النص في مقدمة المؤقت حيث ينظر اللاعب.
  3. حدد TextLabel. في الخصائص، أجرِ التغييرات التالية:

    • اضبط الحجم إلى {1, 0},{1, 0}.
    • اضبط TextScaled إلى true.
    • اضبط النص ليكون فارغًا. سيتم تحديث النص باستخدام البرنامج النصي.

إعداد البرنامج النصي

الآن بعد أن تم وضع المؤقت، أنشئ برنامجًا نصيًا للتحكم في الجسر وعرض الرقم المتناقص للاعبين.

  1. في جزء الجسر، أضف برنامجًا نصيًا جديدًا يسمى TimedBridge. في ذلك البرنامج النصي، قم بإنشاء المتغيرات التالية.


    local bridge = script.Parent
    local button = workspace.ButtonBridge
    local timerText = workspace.TimerDisplay.SurfaceGui.TextLabel
    -- المدة الزمنية التي سيظل الجسر صلبًا فيها
    local timerDuration = 5

برمجة تفاعل اللمس

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

  1. أنشئ وظيفة جديدة تسمى startTimer() مع عبارة طباعة داخلها. ستستخدم عبارة الطباعة لاختبار الكود الخاص بك.


    local timerDuration = 5
    local function startTimer()
    print("بدأ العد التنازلي")
    end
  2. قم ببرمجة وظيفة تسمى buttonPressed() للتحقق مما إذا كان إنسانًا يلمس الزر. يجب أن تقبل الوظيفة معلمة partTouched، ثم تحتوي على جملة if فارغة إذا تم الكشف عن إنسان في ذلك الجزء.


    local function startTimer()
    print("بدأ العد التنازلي")
    end
    local function buttonPressed(partTouched)
    local character = partTouched.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    end
    end
  3. لبدء المؤقت، في جملة if، استدعِ وظيفة startTimer().


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
  4. تحت نهاية buttonPressed()، قم بربط وظيفة buttonPressed() بحدث Touched للزر.


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    startTimer()
    end
    end
    button.Touched:Connect(buttonPressed)
  5. قم بتشغيل المشروع. المس الجزء وتحقق في نافذة الخرج لرؤية عبارة الطباعة.

نصائح لتجاوز المشاكل

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

مشكلة: رسالة خطأ تقول: "... ليس عضوًا صالحًا في workspace".

  • في برنامج TimedBridge، تحقق مما إذا كانت جميع الأجزاء مكتوبة بشكل صحيح تمامًا كما تظهر في المستكشف.

مشكلة: لا يمكن رؤية الأجزاء.

  • تأكد من أن الأجزاء الثلاثة مثبتة.
  • تحقق من خاصية الشفافية للجسر.

إنشاء المؤقت

عندما يخطو اللاعبون على الجسر، ستجعل startTimer() الجسر قابلًا للمشي وتبدأ المؤقت. بمجرد وصول المؤقت إلى 0، سيصبح الجسر غير قابل للمشي، مما يتسبب في سقوط أي شخص لا يتحرك بسرعة كافية.

جعل الجسر قابلًا للمشي

للبداية، سيحتاج البرنامج النصي لجعل الجسر صلبًا، أو قابلًا للاصطدام ثم بدء المؤقت حتى يصبح غير قابل للمشي.

  1. لجعل الجسر قابلًا للمشي، في startTimer()، قم بتغيير خاصية الشفافية للجسر إلى 0 (معتم) وخاصية CanCollide إلى true.


    local function startTimer()
    -- اجعل الجسر مرئيًا وقابلًا للمشي
    bridge.Transparency = 0
    bridge.CanCollide = true
    end
  2. لإنشاء مؤقت ينخفض، أنشئ حلقة for بالقيم التالية.

    • المتغير الضابط: يسمى count، يتم تعيينه إلى timerDuration.
    • النهاية: 0
    • الزيادة: -1

    local function startTimer()
    -- اجعل الجسر مرئيًا وقابلًا للمشي
    bridge.Transparency = 0
    bridge.CanCollide = true
    for count = timerDuration, 0, -1 do
    end
    end
  3. لعرض المؤقت للاعبين، قم بتغيير النص في timerText لعرض العداد عن طريق الكتابة timerText.Text = count. في كل مرة تمر فيها حلقة for عبر تكرار، سيتم عرض الرقم التالي للاعبين في المؤقت.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    end
  4. استخدم دالة task.wait لجعل حلقة for تنفذ مرة واحدة فقط في الثانية.


    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
  5. قم بتشغيل التجربة. عندما تلمس الزر، يجب أن يظهر الجسر ويبدأ المؤقت، ثم يكتمل.

منع إعادة تشغيل الجسر

لاحظ أنه إذا تحركت حول الزر، سيستمر المؤقت في إعادة البدء.

وهذا لأن حلقة for يتم استدعاؤها كلما لمست الزر وتبدأ حلقة for من البداية. لمنع المؤقت من إعادة التشغيل باستمرار، ستحتاج إلى إضافة متغير منطقي، وهو نوع من المتغيرات، سيسيطر على ما إذا كان يُسمح بـ startTimer() أن يتم استدعاؤه مرة أخرى.

المتغيرات المنطقية تُكتب بنفس طريقة كتابة المتغيرات الأخرى، ولكن بدلاً من استخدام الأرقام أو السلاسل، يُمكن تعيينها فقط إلى true أو false. في هذه الحالة، سيستخدم البرنامج النصي متغيرًا منطقيًا للتحقق مما إذا كان المؤقت يعمل حاليًا قبل بدء تشغيله.

  1. في الأعلى في برنامجك النصي، تحت متغيراتك، أنشئ متغيرًا يسمى timerActive واضبطه على false لأنه لم يضغط أحد على الزر بعد.


    local timerDuration = 5
    local timerActive = false
    local function startTimer()
  2. للتأكد من بدء المؤقت فقط عندما يكون المتغير المنطقي timerActive غير صحيح، أضف شرطًا ثانيًا في جملة if في buttonPressed().


    local function buttonPressed(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and timerActive == false then
    startTimer()
    end
    end
  3. لمنع تشغيل startTimer() مرة أخرى قبل انتهاء وقت المؤقت، قم بتعيين المتغير المنطقي timerActive على true.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
  4. في وظيفة startTimer(), بعد حلقة for، قم بإعادة الجسر إلى خصائصه الأصلية عن طريق تغيير شفافية الجسر إلى 0.8 وCanCollide إلى false.


    local function startTimer()
    timerActive = true
    bridge.Transparency = 0
    bridge.CanCollide = true
    -- حلقة for التي تعد التنازلي من timerDuration
    for count = timerDuration, 0, -1 do
    timerText.Text = count
    task.wait(1)
    end
    -- اجعل الجسر غير قابل للمشي
    bridge.Transparency = 0.8
    bridge.CanCollide = false
    end
  5. هناك شيء أخير لإعادة ضبط الجسر وهو تغيير timerText إلى سلسلة فارغة كما كان في الأصل. ثم، قم بتعيين المتغير المنطقي timerActive إلى false.


    bridge.Transparency = 0.8
    bridge.CanCollide = false
    timerText.Text = ""
    timerActive = false
  6. اختبر اللعبة وتأكد من أن الجسر يمكن استخدامه عدة مرات.

النص البرمجي الكامل للجسر المؤقت


local bridge = script.Parent
-- الحصول على الزر كما هو مكتوب في المستكشف
local button = workspace.ButtonBridge
-- الحصول على الجزء لعرض المؤقت
local timerPart = workspace.TimerDisplay
-- الحصول على النص الذي سيعرض المؤقت
local timerText = timerPart.SurfaceGui.TextLabel
-- المدة الزمنية التي يجب أن يعبر فيها اللاعبون الجسر
local timerDuration = 5
local timerActive = false
local function startTimer()
print("بدأ العد التنازلي")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- حلقة for التي تعد التنازلي من timerDuration
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- اجعل الجسر غير قابل للمشي
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("الجزء الملموس")
if humanoid and timerActive == false then
print("بدء المؤقت")
startTimer()
end
end
button.Touched:Connect(buttonPressed)

الملخص

يمكن دمج الحلقات مع وسائل مختلفة للتفاعل لإنشاء لحظات لعب ممتعة. في هذا الدرس، تم إنشاء جسر مؤقت باستخدام حلقة for والتي تعمل كعداد تنازلي. خلال العد التنازلي، يُعطى اللاعبون وقتًا محدودًا لعبور الجسر.

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