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

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

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

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

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

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

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

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

    • Transparency = 0.8
    • CanCollide = False

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

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

  1. حدد TimerDisplay وأضف SurfaceGui. ثم، قم بإضافة TextLabel كطفل لـ Surface Gui.

  2. حدد Surface GUI. في الخصائص، قم بإجراء التغييرات التالية:

    • غير Face حتى تتمكن من رؤية نص التسمية على مقدمة المؤقت حيث ينظر اللاعب.
  3. حدد TextLabel. في الخصائص، قم بإجراء التغييرات التالية:

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

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

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

  1. في جزء Bridge، أضف برنامجًا نصيًا جديدًا باسم 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 هو false، أضف شرطًا ثانيًا إلى عبارة 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 وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.