دليل Elevator Saga

Elevator Saga: عناصر التحكم ونصائح الاستراتيجية والإجابات، مع روابط إلى اللعبة والتعليمات المفصّلة.

العب Elevator Saga

برمجة وحدة تحكم المصعد

عدّل وظائف JavaScript وinit وupdate، ثم اضغط على زر "ابدأ" لتشغيل وحدة التحكم.

التحكم والتعليمات الكاملة

اختبار حدث idle قبل إضافة قواعد التوجيه

يمكن لوحدة تحكم تعتمد على الأحداث أن تُسند مهمة جديدة للمصعد عندما يُصبح رمزه idle.

التحكم والتعليمات الكاملة

اختبر قرارًا واحدًا لوحدة التحكم قبل إضافة سياسة التوجيه

ابدأ بـ JavaScript في دالتي init وupdate في اللعبة ثم اضغط على ابدأ لمراقبة المحاكاة. استخدم مرجع واجهة برمجة التطبيقات داخل اللعبة لمعرفة سلوك حدث idle وgoToFloor الدقيق. التمرين الأول هو فهم متى يتلقى المصعد الخامل مهمته التالية. شاهد هذا الحدث والحركة الناتجة قبل إضافة عدة شروط، حتى تتمكن من توضيح أي جزء من وحدة التحكم أصدر الطلب.

ثم قم بفحص وجهات الركاب. الحركة وحدها لا تعني أنه يتم خدمة الركاب. اقرأ الحدث floor_button_pressed في المرجع وقارن الطلبات بالمسار الذي لاحظته. إذا كررت عدة مصاعد نفس المسار، فقد تظل بعض قوائم الانتظار تنتظر. قم بالبناء من وحدة تحكم صغيرة تفهمها بدلاً من نسخ سياسة معقدة وافتراض أنها تلبي هدف الركاب أو وقت الانتظار للتحدي الحالي.

قارن تغيير الكود بالهدف الفعلي للتحدي

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

عند تحرير destinationQueue مباشرة، اتبع متطلبات المرجع لاستدعاء checkDestinationQueue حتى تصبح قائمة الانتظار المعدلة سارية المفعول؛ تتعامل طلبات goToFloor العادية مع الوجهات الموضوعة في قائمة الانتظار بالفعل. حافظ على تميز هذه الأساليب أثناء تصحيح الأخطاء. يصف هذا المركز محاكاة برمجة المتصفح، وليس برنامجًا لمصعد حقيقي أو نظام سلامة الإنتاج. ولا يضمن ذلك أن وحدة تحكم واحدة ستجتاز كل التحديات. استخدم وثائق واجهة برمجة التطبيقات (API) الدقيقة داخل اللعبة، ثم قم بتسجيل الحدث وتغيير التوجيه الذي أدى إلى تحسين الاختبار المحدد الذي قمت بتشغيله للتو.

للحصول على مراجعة ملموسة، شاهد طابقًا به قائمة انتظار بينما يصبح المصعد خاملاً. حدد المعالج الذي يصدر طلب goToFloor التالي وما إذا كان هذا الطلب يخدم الركاب المنتظرين أو يرسل مقصورة المصعد إلى مكان آخر. قم بتغيير خيار التوجيه هذا، ثم قارن نتيجة التحدي. في حالة تنافس العديد من المعالجات، قم بتبسيط وحدة التحكم حتى تتمكن من شرح تسلسل الطلبات. استخدم مرجع واجهة برمجة التطبيقات (API) للأحداث المدعومة بالضبط. إن مراقبة قائمة انتظار واحدة وقرار واحد في كل مرة يمنحك دليلاً على المراجعة دون الادعاء بأنها وحدة تحكم مثالية عالمية.

نصائح واستراتيجيات Elevator Saga

حدّد نصيحة للتدرّب عليها في الجولة المقبلة. هذه القائمة لا تغيّر اللعبة ولا تحفظ تقدّمك فيها.

أسئلة وأجوبة حول Elevator Saga

بأي لغة أكتب؟

يستخدم جهاز التحكم JavaScript، مع وظائف init و update في محرر اللعبة.

هل هذا الجهاز يشغل مصعداً حقيقياً؟

لا، إنها محاكاة برمجة تتم بالكامل داخل لعبة المتصفح.

هل يمكنني استخدامه للتدرب على البرمجة؟

نعم، وخاصةً التحكم القائم على الأحداث واختبار التغييرات الصغيرة. اللعبة مبنية على مشروع Elevator Saga الخاص بـ magwo والمرخص بموجب ترخيص MIT؛ وهي ليست دورة تدريبية للحصول على شهادة.

لماذا ينتظر الركاب رغم تحرك المصعد؟

تكرار مسار ثابت لا يخدم جميع الطوابق المطلوبة تلقائياً. عالج حدث floor_button_pressed واستخدم goToFloor للوصول إلى وجهات الركاب. قارن صفوف الانتظار بهدف التحدي قبل إضافة محطات. عند تعديل destinationQueue مباشرة، استدعِ checkDestinationQueue لتفعيل التغيير؛ أما goToFloor فيعالج طلبات الوجهة المعتادة.

التحكم والتعليمات الكاملة

التحكم والتعليمات الكاملة

العب Elevator Saga