/
Ntropy
/
ElevatorSaga
Обзор
Документация
Войти
/
Ntropy
/
ElevatorSaga
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ElevatorScript
57 строк
2 KB
Ntropy
Initial commit ElevatorScript#2.js
08 апр 2025, 17:22
08 апр 2025, 17:22
79c92e1
Код
Авторство
О чём код?
{ init: function(elevators, floors) { let PICKUP_LOAD_FACTOR = 0.8 let current = 0; for (let floor of floors) { let floorBtnHandler = (floor => (() => { let floorNum = floor.floorNum(); let needGo = true; let elevator = elevators[current]; if (/* elevator.loadFactor() < PICKUP_LOAD_FACTOR && */ elevator.destinationQueue.every(elem => elem != floorNum)) { elevator.goToFloor(floorNum); needGo = false; } if (needGo) { current = (current + 1) % elevators.length; let elevator = elevators[current]; elevator.goToFloor(floorNum); } }))(floor); floor.on('up_button_pressed', floorBtnHandler); floor.on('down_button_pressed', floorBtnHandler); } for (let n = 0; n < elevators.length; n += 1) { let elevator = elevators[n]; elevator.on('floor_button_pressed', (n => (floorNum => { let elevator = elevators[n]; elevator.currentFloor(); elevator.goToFloor(floorNum); }))(n)); elevator.on('stopped_at_floor', (n => (floorNum => { let elevator = elevators[n]; elevator.destinationQueue = elevator.destinationQueue.filter(elem => elem != floorNum); elevator.checkDestinationQueue(); }))(n)); elevator.on('passing_floor', (n => ((floorNum, dir) => { if (elevator.loadFactor() < PICKUP_LOAD_FACTOR && elevator.destinationDirection() == dir && elevator.destinationQueue.some(elem => elem == floorNum)) { elevator.destinationQueue = elevator.destinationQueue.filter(elem => elem != floorNum); elevator.checkDestinationQueue(); elevator.goToFloor(floorNum, true); } }))(n)); } // Whenever the elevator is idle (has no more queued destinations) ... // elevator.on("idle", ); }, update: function(dt, elevators, floors) { // We normally don't need to do anything here } }