Проверьте одно решение контроллера перед добавлением политики маршрутизации.
Начните с JavaScript в функциях init и update игры и нажмите «Старт», чтобы наблюдать за симуляцией. Используйте внутриигровую ссылку на API, чтобы узнать точное поведение события idle и goToFloor. Первое упражнение — понять, когда неработающий лифт получает следующее задание. Наблюдайте за этим событием и возникающим в результате движением, прежде чем добавлять несколько условий, чтобы можно было объяснить, какая часть контроллера выдала запрос.
Затем осмотрите пассажирские направления. Само по себе движение не означает, что пассажиры обслуживаются. Прочтите событие floor_button_pressed в справочнике и сравните запросы с маршрутом, который вы наблюдаете. Если несколько лифтов повторяют один и тот же маршрут, некоторые очереди все равно могут ждать. Создайте из небольшого контроллера, который вы понимаете, вместо того, чтобы копировать сложную политику и предполагать, что она удовлетворяет целям пассажира или времени ожидания текущей задачи.
Сравните изменение кода с фактической целью челленджа
Перед запуском симуляции прочтите условие прохождения задания и выберите одно поведение для проверки, например время простоя, повторяющиеся остановки или ожидание пассажиров на определенном этаже. Измените одно решение и запустите симуляцию снова. Более частое движение лифта не означает, что контроллер выполняет условия задания. Сравните видимые очереди и отображаемый результат с целью, а не используйте движение как единственный признак успеха.
При непосредственном редактировании destinationQueue следуйте требованию ссылки вызвать checkDestinationQueue, чтобы измененная очередь вступила в силу; обычные запросы goToFloor уже обрабатывают адресаты в очереди. Сохраняйте эти подходы разными во время отладки. В этом центре описывается симуляция программирования через браузер, а не программное обеспечение для реального лифта или системы безопасности производства. Это не гарантирует, что один диспетчер справится со всеми испытаниями. Используйте точную документацию API внутри игры, а затем запишите, какое событие и изменение маршрутизации улучшили конкретный тест, который вы только что выполнили.
Для конкретного обзора посмотрите этаж с очередью, пока лифт простаивает. Определите, какой обработчик отправляет следующий запрос goToFloor и обслуживает ли этот запрос ожидающих пассажиров или отправляет машину в другое место. Измените этот вариант маршрутизации, а затем сравните результат запроса. Если конкурируют несколько обработчиков, упрощайте контроллер до тех пор, пока не сможете объяснить последовательность запросов. Используйте ссылку API для конкретных поддерживаемых событий. Наблюдение за одной очередью и одним решением за раз дает вам свидетельство пересмотра, не утверждая, что это универсальный оптимальный контроллер.
Советы и стратегия для Elevator Saga
Отметьте совет для следующей попытки. Этот список не меняет игру и не сохраняет игровой прогресс.
Вопросы и ответы по Elevator Saga
На каком языке я пишу?
В качестве контроллера используется JavaScript, а в редакторе игры доступны функции init и update.
Это настоящий лифт?
Нет. Это симулятор программирования, полностью реализованный в браузерной игре.
Можно ли использовать это для практики программирования?
Да, в частности, управление, основанное на событиях, и тестирование небольших изменений. Игра основана на проекте magwo под лицензией MIT Elevator Saga; это не курс сертификации.
Почему пассажиры ждут, хотя лифт движется?
Повторяемый маршрут не обслуживает все запрошенные этажи автоматически. Обработайте floor_button_pressed и используйте goToFloor для пунктов назначения. Сравните очереди с целью задания перед добавлением остановок. После прямого изменения destinationQueue вызовите checkDestinationQueue; обычные запросы уже обрабатывает goToFloor.
Управление и полные инструкции
Управление и полные инструкции
Играть в Elevator Saga