Это игра программирования!
Ваша задача - запрограммировать движение лифтов, написав скрипт в JavaScript.
Цель состоит в том, чтобы эффективно перевозить людей.
В зависимости от того, насколько хорошо вы это делаете, вы можете прогрессировать через все более сложные задачи.
Только самые лучшие скрипты смогут выполнить все задачи.
Введите код в окно ввода под игрой, и нажмите кнопку Apply чтобы запустить скрипт.
Вы можете увеличить или уменьшить скорость времени, нажав кнопку и .
Если программа содержит ошибку, можно использовать средства разработчика в веб-браузере для ее отладки.
Если вы хотите начать заново, то нажмите кнопку Reset. Это вернет стандартный код.
Если у вас есть любимый текстовый редактор, такой как Sublime Text, не стесняйтесь редактировать код и вставлять его в игровой редактор.
Ваш код автоматически сохраняется в локальном хранилище, так что не волнуйтесь - он не исчезнет, если вы случайно закроете браузер.
Ваш код должен объявлять объект, содержащий по крайней мере дв метода, называемые. init и update. Вроде этого:
{
init: function(elevators, floors) {
// Вызывается инструкция за инструкцией
},
update: function(dt, elevators, floors) {
// Вызывается на каждый вызов инструкции в методе init
// Пример: вызван elevators.goToFloor(1) в init
// update будет вызван примерно 100 раз в момент перемещения лифта.
// dt - количество игровых секунд, прошедших с момента последнего вызова update
}
}
Эти методы будут вызваны игрой во время запуска.
Когда начнется игра init будет вызываться и последовательно отрабатывать, а update будет вызываться неоднократно во время вызова инструкций в init.
Обычно большую часть кода рекомендуется писать в методе init, чтобы настроить прослушивание событий и логику.
elevator.goToFloor(1);
if(elevator.currentFloor() > 2) { ... }
Можно прослушивать события, например, при остановке на этаже или нажатии кнопки.
elevator.on("idle", function() { elevator.goToFloor(0); });
elevator.on("floor_button_pressed", function(floorNum) { ... } );
floor.on("up_button_pressed", function() { ... } );
Свойство | Тип | Описание | Пример |
---|---|---|---|
goToFloor | function | Ставит лифт в очередь на указанный этаж. Если вы укажете true в качестве второго аргумента, лифт перейдет непосредственно на этот этаж, а затем на любые другие этажи в очереди. |
|
stop | function | Очищает очередь и остановает лифт, если он движется. Обратите внимание, что лифт, вероятно, не остановится на этаже, так что пассажиры не выйдут. |
|
currentFloor | function | Получает номер этажа, на котором сейчас находится лифт. |
|
goingUpIndicator | function | Получает или задает индикатор движения вверх, который будет влиять на поведение пассажиров при остановке на этажах. |
|
goingDownIndicator | function | Получает или задает индикатор движения вниз, который будет влиять на поведение пассажиров при остановке на этажах. |
|
maxPassengerCount | function | Получает максимальное количество пассажиров, которые могут одновременно занимать лифт. |
|
loadFactor | function | Получает коэффициент загрузки лифта. 0 означает пустой, 1 означает полный. Варьируется в зависимости от веса пассажира. |
|
destinationDirection | function | Получает направление, в котором лифт в настоящее время собирается двигаться. Может быть "вверх", "вниз" или "остановлено". | |
destinationQueue | array | Текущая очередь инструкций, то есть номера этажей, на которые запланирован лифт. Обратите внимание, что необходимо вызвать checkDestinationQueue(), чтобы изменения вступили в силу немедленно. |
|
checkDestinationQueue | function | Проверяет очередь на наличие новых инструкций. Обратите внимание, что это необходимо вызвать только при явном изменении очереди инструкций. |
|
getPressedFloors | function | Возвращает текущие нажатые номера этажей в виде массива. |
|
Событие | Описание | Пример |
---|---|---|
idle | Срабатывает, когда лифт выполнил все свои задачи и ничего не делает. |
|
floor_button_pressed | Срабатывает, когда пассажир нажал кнопку в лифте. |
|
passing_floor | Срабатывает немного раньше, чем лифт опустится к этажу. Самое время решить, стоит ли останавливаться на этом этаже. Обратите внимание, что это событие не вызывается для конкретного этажа. Направление или "вверх" или "вниз". |
|
stopped_at_floor | Срабатывает, когда лифт поднимается на этаж. |
|
Свойство | Тип | Описание | Пример |
---|---|---|---|
floorNum | function | Возвращает номер этажа объекта floor. |
|
Событие | Описание | Пример |
---|---|---|
up_button_pressed | Срабатывает, когда кто-то нажал на кнопку на этаже. Обратите внимание, что пассажиры снова нажмут кнопку, если они не войдут в лифт. |
|
down_button_pressed | Срабатывает, когда кто-то нажал кнопку вниз на этаже. Обратите внимание, что пассажиры снова нажмут кнопку, если они не войдут в лифт. |
|