الفصل 26 — بنية اللعبة وحالاتها
الجزء 2A — أساسيات اللعبة ثنائية الأبعاد · الفصل 26 من 62 · 8 ساعات
الفصل 26 — بنية اللعبة وحالاتها
المستوى: متوسط المدة المقدّرة: 8 ساعات المتطلبات المسبقة: الفصول من 20 إلى 25 (حلقة اللعبة،
Canvas، السبرايتات، الفيزياء، التصادمات، الكاميرا) والفصول من 8 إلى 11 من الجزء 1A (البرمجة كائنية التوجه، الوراثة، الأصناف المجرّدة، enums) ما ستتمكن من فعله في النهاية: تنظيم لعبة كاملة في كيانات وحالات وخدمات وملفات منفصلة، بدلًا من ملفmain.dartواحد يصعب قراءته.
26.0 — أهداف الفصل
في نهاية هذا الفصل، ستكون قادرًا على:
- شرح السبب الذي يجعل ملفًّا من 2000 سطر يعطّل أي مشروع في النهاية؛
- فصل البيانات عن المنطق عن الرسم في اللعبة؛
- تعريف ما هو الكيان (entity) بدقة؛
- كتابة الصنف المجرّد
Entityوجعل الأصناف الأخرى ترث منه بشكل سليم؛ - توزيع العمل بين
update(double dt)وrender(Canvas canvas)؛ - إدارة قائمة من الكيانات وحلقة تحديثها؛
- تشخيص وإصلاح خطأ التعديل المتزامن؛
- إنشاء طوابير للإضافة والحذف؛
- التحكم في ترتيب الرسم بواسطة الحقل
priority؛ - بناء التسلسل الهرمي
Entity → Character → Player / Enemyومعرفة حدوده؛ - استبدال الوراثة العميقة بـالتركيب (composition)؛
- شرح مبدأ ECS (الكيان، المكوّن، النظام)؛
- مقارنة ECS بالبرمجة كائنية التوجه التقليدية في جدول قرار؛
- وصف نموذج Flame، أي شجرة المكوّنات؛
- تعريف حالة اللعبة وكتابة الـ enum المسمّى
GameState؛ - رسم آلة الحالات للعبة كاملة؛
- تنفيذ القائمة واللعب والإيقاف المؤقت وانتهاء اللعبة والفوز؛
- تطبيق نمط State: صنف واحد لكل شاشة؛
- تكديس الحالات لعرض شاشة الإيقاف المؤقت فوق اللعبة؛
- فصل لوحة المفاتيح عن الإجراءات بواسطة مدير للمدخلات؛
- اقتراح إعادة تعيين المفاتيح؛
- جعل الكائنات تتواصل دون ارتباط مباشر بينها بفضل ناقل أحداث (event bus)؛
- مركزة النقاط والأرواح والتقدّم في خدمة بيانات؛
- التعرّف على مخاطر Singleton وممارسة حقن تبعيات بسيط؛
- تنظيم ملفات مشروع لعبة؛
- تحديد ما يجب اختباره في اللعبة وكتابة هذه الاختبارات؛
- تجميع المحرّك المصغّر الكامل للجزء 2A؛
- شرح ما ستضيفه Flame بدقة في الفصل 27.
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش