You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/ar/6-space-game/1-introduction/assignment.md

6.6 KiB

تصميم لعبة: تطبيق أنماط التصميم

نظرة عامة على المهمة

قم بتطبيق معرفتك الجديدة بأنماط التصميم من خلال إنشاء نموذج أولي للعبة بسيطة! ستساعدك هذه المهمة على ممارسة الأنماط المعمارية (الوراثة أو التركيب) ونظام الاتصال pub/sub الذي تعلمته في الدرس.

التعليمات

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

المتطلبات

اختر نمط الهيكل الخاص بك:

  • الخيار أ: استخدم الوراثة القائمة على الفئات (مثل المثال GameObjectMovableHero)
  • الخيار ب: استخدم التركيب (مثل نهج وظيفة المصنع مع السلوكيات المختلطة)

تنفيذ الاتصال:

  • قم بتضمين فئة EventEmitter لنظام الرسائل pub/sub
  • قم بإعداد ما لا يقل عن 2-3 أنواع مختلفة من الرسائل (مثل PLAYER_MOVE, ENEMY_SPAWN, SCORE_UPDATE)
  • قم بتوصيل إدخال المستخدم (لوحة المفاتيح/الماوس) بأحداث اللعبة من خلال نظام الأحداث

عناصر اللعبة التي يجب تضمينها:

  • على الأقل شخصية واحدة يتحكم بها اللاعب
  • على الأقل كائن لعبة آخر (عدو، عنصر قابل للجمع، أو عنصر بيئي)
  • تفاعل أساسي بين الكائنات (تصادم، جمع، أو اتصال)

أفكار الألعاب المقترحة

ألعاب بسيطة للنظر فيها:

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

إرشادات هيكل الكود

// Example starting structure
const Messages = {
  // Define your game messages here
};

class EventEmitter {
  // Your event system implementation
}

// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }

// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }

اختبار التنفيذ الخاص بك

تحقق من أن الكود يعمل عن طريق:

  • اختبار أن الكائنات تتحرك أو تتغير عند تشغيل الأحداث
  • التأكد من أن الكائنات المتعددة يمكنها الاستجابة لنفس الحدث
  • التحقق من أنه يمكنك إضافة سلوكيات جديدة دون تعديل الكود الموجود
  • ضمان أن إدخال لوحة المفاتيح/الماوس يشغل أحداث اللعبة بشكل صحيح

إرشادات التقديم

يجب أن يتضمن التقديم الخاص بك:

  1. ملفات JavaScript مع تنفيذ اللعبة الخاصة بك
  2. ملف HTML لتشغيل واختبار اللعبة (يمكن أن يكون بسيطًا)
  3. تعليقات تشرح النمط الذي اخترته ولماذا
  4. وثائق مختصرة لأنواع الرسائل وما تقوم به

معايير التقييم

المعايير ممتاز (3 نقاط) مقبول (2 نقاط) يحتاج إلى تحسين (1 نقطة)
نمط الهيكل يتم تنفيذ الوراثة أو التركيب بشكل صحيح مع تسلسل واضح للفئات/الكائنات يتم استخدام النمط المختار مع بعض المشكلات أو التناقضات محاولة استخدام النمط ولكن التنفيذ يحتوي على مشاكل كبيرة
تنفيذ pub/sub يعمل EventEmitter بشكل صحيح مع أنواع رسائل متعددة وتدفق أحداث مناسب يعمل نظام pub/sub الأساسي مع بعض معالجة الأحداث نظام الأحداث موجود ولكنه لا يعمل بشكل موثوق
وظائف اللعبة ثلاثة عناصر تفاعلية أو أكثر تتواصل من خلال الأحداث عنصران تفاعليان مع اتصال أحداث أساسي عنصر واحد يستجيب للأحداث أو تفاعل أساسي
جودة الكود كود نظيف ومعلق بشكل جيد مع تنظيم منطقي واستخدام حديث لـ JavaScript كود منظم بشكل عام مع تعليقات كافية الكود يعمل ولكنه يفتقر إلى التنظيم أو التعليقات الواضحة

نقاط إضافية:

  • ميكانيكا اللعبة الإبداعية التي تعرض استخدامات مثيرة للاهتمام للأنماط
  • طرق إدخال متعددة (أحداث لوحة المفاتيح والماوس)
  • هيكل قابل للتوسع يسهل تمديده بميزات جديدة

إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.