Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - تجميع الروبوت

جزء من قسم Object Oriented Programming في رحلة Lua على Coddy — الدرس 54 من 70.

challenge icon

التحدي

سهل

دعنا نجمع Robot من أجزاء مكونة فردية! بدلاً من استخدام الوراثة، ستقوم ببناء روبوت من خلال تكوينه من كائنات Arm و Leg و Head منفصلة — لكل منها سلوكها الخاص المتخصص. سيقوم الروبوت بتنسيق هذه الأجزاء من خلال التفويض (delegation).

ستقوم بتنظيم الكود الخاص بك عبر خمسة ملفات:

  • Arm.lua: قم بإنشاء فئة Arm مع منشئ :new(side) يخزن الجانب الذي توجد فيه (على سبيل المثال، "left" أو "right"). قم بتضمين تابع :raise() يطبع {side} arm raised وتابع :lower() يطبع {side} arm lowered.
  • Leg.lua: قم بإنشاء فئة Leg مع منشئ :new(side) يخزن الجانب. قم بتضمين تابع :step() يطبع {side} leg steps forward.
  • Head.lua: قم بإنشاء فئة Head مع منشئ :new(). قم بتضمين تابع :nod() يطبع Head nods وتابع :shake() يطبع Head shakes.
  • Robot.lua: قم بإنشاء فئة Robot التي يقوم منشئها :new(name) بتخزين الاسم وإنشاء جميع الأجزاء المكونة داخلياً: ذراع يسرى، وذراع يمنى، ورجل يسرى، ورجل يمنى، ورأس. يجب أن يحتوي الروبوت على هذه التوابع التي تفوض المهام لأجزائها:
    • :greet() — يطبع {name} says hello!، ثم يرفع الذراع اليمنى، ثم يخفضها
    • :walk() — يجعل الرجل اليسرى تخطو، ثم الرجل اليمنى تخطو
    • :respond(answer) — إذا كانت الإجابة "yes"، يومئ الرأس؛ وإذا كانت "no"، يهز الرأس
  • main.lua: اقرأ المدخلات لاسم الروبوت واستجابة yes/no. أنشئ Robot، واجعله يحيي، ويمشي، ثم يستجيب بناءً على المدخلات.

ستتلقى مدخلين:

  1. اسم الروبوت (سلسلة نصية)
  2. استجابة: yes أو no

يجب أن يظهر مخرجك الروبوت وهو ينسق أجزاءه:

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods

أو إذا كانت الاستجابة no:

{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakes

على سبيل المثال، إذا كانت المدخلات هي Robo و yes، يجب أن يكون المخرج:

Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nods

لاحظ كيف أن الروبوت لا يعرف كيف ترفع الأذرع أو تخطو الأرجل — إنه ببساطة يخبر كل جزء بما يجب فعله. كل مكون مستقل وقابل لإعادة الاستخدام، ويعمل الروبوت كمنسق يجمعهم جميعاً معاً!

جرّب بنفسك

-- main.lua: نقطة الدخول لتحدي تكوين الروبوت

local Robot = require('Robot')

-- قراءة المدخلات
local name = io.read()
local answer = io.read()

-- TODO: إنشاء روبوت بالاسم المعطى
-- TODO: اجعل الروبوت يلقي التحية
-- TODO: اجعل الروبوت يمشي
-- TODO: اجعل الروبوت يستجيب بناءً على مدخل الإجابة

جميع دروس Object Oriented Programming