Перевірте одне рішення контролера перед додаванням політики маршрутизації
Почніть із JavaScript у грі функціях init та update і натисніть «Пуск», щоб спостерігати за симуляцією. Використовуйте довідник API у грі для точної поведінки події idle і goToFloor. Перша вправа — зрозуміти, коли незадіяний ліфт отримає наступне завдання. Перегляньте цю подію та результуючий рух, перш ніж додавати кілька умов, щоб ви могли пояснити, яка частина контролера випустила запит.
Потім перевірте напрямки пасажирів. Сам по собі рух не означає, що пасажири обслуговуються. Прочитайте подію floor_button_pressed у довідці та порівняйте запити з маршрутом, який ви спостерігаєте. Якщо кілька ліфтів повторюють той самий маршрут, деякі черги все одно можуть чекати. Створюйте з невеликого контролера, який ви розумієте, замість того, щоб копіювати складну політику та припускати, що вона задовольняє цілі щодо кількості пасажирів або часу очікування поточного завдання.
Порівняйте зміну коду з фактичною метою завдання
Перед запуском симуляції прочитайте умову проходження завдання та виберіть одну поведінку для перевірки, наприклад час простою, повторні зупинки або пасажирів, які чекають на певному поверсі. Змініть одне рішення та запустіть знову. Частіший рух ліфта не означає, що контролер виконує умови завдання. Порівняйте видимі черги та відображені результати з метою, а не використовуйте рух як єдину ознаку успіху.
Під час безпосереднього редагування destinationQueue дотримуйтеся вимог посилання щодо виклику checkDestinationQueue, щоб переглянута черга набула чинності; звичайні goToFloor запити вже обробляють призначення в черзі. Розрізняйте ці підходи під час налагодження. Цей центр описує симуляцію програмування браузера, а не програмне забезпечення для реального ліфта чи системи безпеки виробництва. Це не гарантує, що один контролер пройде всі виклики. Використовуйте точну документацію API в грі, а потім запишіть, яка подія та зміна маршруту покращили конкретний тест, який ви щойно запустили.
Для конкретного огляду спостерігайте за поверхом із чергою, поки ліфт простоює. Визначте, який оператор надсилає наступний запит goToFloor і чи цей запит обслуговує пасажирів, що очікують, чи відправляє машину в інше місце. Змініть цей вибір маршруту, а потім порівняйте результат завдання. Якщо конкурують кілька обробників, спростіть контролер, поки не зможете пояснити послідовність запитів. Використовуйте посилання на API, щоб дізнатися точні підтримувані події. Спостереження за однією чергою та одним рішенням за раз дає вам докази для перегляду, не стверджуючи, що це універсальний оптимальний регулятор.
Поради та стратегія Elevator Saga
Позначте пораду для наступної спроби. Цей список не змінює гру й не зберігає ігровий прогрес.
Запитання та відповіді до Elevator Saga
Якою мовою я пишу?
Контролер використовує JavaScript, з функціями init та update в редакторі гри.
Це справді працює на ліфті?
Ні. Це симуляція програмування, повністю всередині браузерної гри.
Чи можу я використовувати це для практики кодування?
Так, зокрема, керування на основі подій та тестування невеликих змін. Гра базується на проєкті magwo Elevator Saga, ліцензованому MIT; це не сертифікаційний курс.
Чому пасажири чекають, хоча ліфт рухається?
Повторюваний маршрут не обслуговує всі запитані поверхи автоматично. Обробляйте floor_button_pressed і задавайте цілі через goToFloor. Порівнюйте черги з метою завдання перед новими зупинками. Після прямої зміни destinationQueue викличте checkDestinationQueue; goToFloor вже обробляє звичайні запити.