6.6 KiB
تصميم لعبة: تطبيق أنماط التصميم
نظرة عامة على المهمة
قم بتطبيق معرفتك الجديدة بأنماط التصميم من خلال إنشاء نموذج أولي للعبة بسيطة! ستساعدك هذه المهمة على ممارسة الأنماط المعمارية (الوراثة أو التركيب) ونظام الاتصال pub/sub الذي تعلمته في الدرس.
التعليمات
قم بإنشاء تمثيل بسيط للعبة يظهر أنماط التصميم من هذا الدرس. يجب أن تكون اللعبة وظيفية ولكن لا تحتاج إلى رسومات معقدة – ركز على الهيكل الأساسي وأنماط الاتصال.
المتطلبات
اختر نمط الهيكل الخاص بك:
- الخيار أ: استخدم الوراثة القائمة على الفئات (مثل المثال
GameObject→Movable→Hero) - الخيار ب: استخدم التركيب (مثل نهج وظيفة المصنع مع السلوكيات المختلطة)
تنفيذ الاتصال:
- قم بتضمين فئة
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 */ }
اختبار التنفيذ الخاص بك
تحقق من أن الكود يعمل عن طريق:
- اختبار أن الكائنات تتحرك أو تتغير عند تشغيل الأحداث
- التأكد من أن الكائنات المتعددة يمكنها الاستجابة لنفس الحدث
- التحقق من أنه يمكنك إضافة سلوكيات جديدة دون تعديل الكود الموجود
- ضمان أن إدخال لوحة المفاتيح/الماوس يشغل أحداث اللعبة بشكل صحيح
إرشادات التقديم
يجب أن يتضمن التقديم الخاص بك:
- ملفات JavaScript مع تنفيذ اللعبة الخاصة بك
- ملف HTML لتشغيل واختبار اللعبة (يمكن أن يكون بسيطًا)
- تعليقات تشرح النمط الذي اخترته ولماذا
- وثائق مختصرة لأنواع الرسائل وما تقوم به
معايير التقييم
| المعايير | ممتاز (3 نقاط) | مقبول (2 نقاط) | يحتاج إلى تحسين (1 نقطة) |
|---|---|---|---|
| نمط الهيكل | يتم تنفيذ الوراثة أو التركيب بشكل صحيح مع تسلسل واضح للفئات/الكائنات | يتم استخدام النمط المختار مع بعض المشكلات أو التناقضات | محاولة استخدام النمط ولكن التنفيذ يحتوي على مشاكل كبيرة |
| تنفيذ pub/sub | يعمل EventEmitter بشكل صحيح مع أنواع رسائل متعددة وتدفق أحداث مناسب | يعمل نظام pub/sub الأساسي مع بعض معالجة الأحداث | نظام الأحداث موجود ولكنه لا يعمل بشكل موثوق |
| وظائف اللعبة | ثلاثة عناصر تفاعلية أو أكثر تتواصل من خلال الأحداث | عنصران تفاعليان مع اتصال أحداث أساسي | عنصر واحد يستجيب للأحداث أو تفاعل أساسي |
| جودة الكود | كود نظيف ومعلق بشكل جيد مع تنظيم منطقي واستخدام حديث لـ JavaScript | كود منظم بشكل عام مع تعليقات كافية | الكود يعمل ولكنه يفتقر إلى التنظيم أو التعليقات الواضحة |
نقاط إضافية:
- ميكانيكا اللعبة الإبداعية التي تعرض استخدامات مثيرة للاهتمام للأنماط
- طرق إدخال متعددة (أحداث لوحة المفاتيح والماوس)
- هيكل قابل للتوسع يسهل تمديده بميزات جديدة
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق. للحصول على معلومات حاسمة، يُوصى بالترجمة البشرية الاحترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.