Created
November 29, 2020 12:32
-
-
Save zhao-ji/1adaf996864fe7d8192c631e3186eaf0 to your computer and use it in GitHub Desktop.
elevator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
init: function(elevators, floors) { | |
var elevator = elevators[0]; // Let's use the first elevator | |
var elevator1 = elevators[1]; // Let's use the first elevator | |
// Whenever the elevator is idle (has no more queued destinations) ... | |
elevator.on("idle", function() { | |
// let's go to all the floors (or did we forget one?) | |
elevator.goToFloor(0); | |
}); | |
elevator.goingUpIndicator(true); | |
elevator.goingDownIndicator(false); | |
elevator1.on("idle", function() { | |
// let's go to all the floors (or did we forget one?) | |
elevator.goToFloor(7); | |
}); | |
elevator1.goingUpIndicator(false); | |
elevator1.goingDownIndicator(true); | |
elevator.on("floor_button_pressed", function(floorNum) { | |
elevator.goToFloor(floorNum); | |
const currentFloor = elevator.currentFloor(); | |
const destinationQueue = elevator.destinationQueue; | |
const floorUpQueue = []; | |
floors.forEach(floor => { | |
if (floor.buttonStates.up.length > 0) floorUpQueue.push(floor.level) | |
}) | |
elevator.destinationQueue = [ | |
...new Set([...destinationQueue, ...floorUpQueue]) | |
].sort((a, b) => Number(a < currentFloor) * 10 + a < Number(b < currentFloor) * 10 + b) | |
elevator.checkDestinationQueue(); | |
}) | |
elevator1.on("floor_button_pressed", function(floorNum) { | |
elevator.goToFloor(floorNum); | |
const currentFloor = elevator.currentFloor(); | |
const destinationQueue = elevator.destinationQueue; | |
const floorDownQueue = []; | |
floors.forEach(floor => { | |
if (floor.buttonStates.down.length > 0) floorDownQueue.push(floor.level) | |
}) | |
elevator.destinationQueue = [ | |
...new Set([...destinationQueue, ...floorDownQueue]) | |
].sort((a, b) => Number(a < currentFloor) * 10 + a > Number(b < currentFloor) * 10 + b) | |
elevator.checkDestinationQueue(); | |
}) | |
floors.forEach(function (floor) { | |
floor.on("up_button_pressed", function() { | |
elevator.goToFloor(floor.floorNum()); | |
}) | |
floor.on("down_button_pressed", function() { | |
elevator1.goToFloor(floor.floorNum()); | |
}) | |
}) | |
}, | |
fuck: function (elevator, floors) { | |
const currentQueue = {}; | |
elevator.destinationQueue.forEach(hi => { | |
currentQueue[hi] = 1; | |
}); | |
floors.forEach(floor => { | |
if (floor.buttonStates.up.length > 0) { | |
if (Object.keys(currentQueue).indexOf(floor.level) > -1) { | |
currentQueue[floor.level] += 1 | |
} else { | |
currentQueue[floor.level] = 1 | |
} | |
} | |
if (floor.buttonStates.down.length > 0) { | |
if (Object.keys(currentQueue).indexOf(floor.level) > -1) { | |
currentQueue[floor.level] += 1 | |
} else { | |
currentQueue[floor.level] = 1 | |
} | |
} | |
}) | |
elevator.destinationQueue = Object.keys(currentQueue).sort((a, b) => currentQueue[a] >= currentQueue[b]); | |
console.log(111111111) | |
console.log({currentQueue}) | |
console.log({floorNum}) | |
console.log(elevator.destinationQueue) | |
console.log(111111111) | |
elevator.checkDestinationQueue(); | |
}, | |
update: function(dt, elevators, floors) { | |
// We normally don't need to do anything here | |
} | |
} | |
{ | |
init: function(elevators, floors) { | |
var elevator = elevators[0]; // Let's use the first elevator | |
var elevator1 = elevators[1]; | |
// Whenever the elevator is idle (has no more queued destinations) ... | |
elevator.on("idle", function() { | |
// let's go to all the floors (or did we forget one?) | |
elevator.goToFloor(0); | |
}); | |
elevator.goingUpIndicator(true); | |
elevator.goingDownIndicator(false); | |
elevator1.on("idle", function() { | |
// let's go to all the floors (or did we forget one?) | |
elevator1.goToFloor(7); | |
}); | |
elevator1.goingUpIndicator(false); | |
elevator1.goingDownIndicator(true); | |
elevator.on("floor_button_pressed", function(floorNum) { | |
elevator.goToFloor(floorNum); | |
const currentFloor = elevator.currentFloor(); | |
const destinationQueue = elevator.destinationQueue; | |
const floorUpQueue = []; | |
floors.forEach(floor => { | |
if (floor.buttonStates.up.length > 0) floorUpQueue.push(floor.level) | |
}) | |
elevator.destinationQueue = [ | |
...new Set([...destinationQueue, ...floorUpQueue]) | |
].sort((a, b) => (Number(a < currentFloor) * 10 + a) - (Number(b < currentFloor) * 10 + b)) | |
elevator.checkDestinationQueue(); | |
}) | |
elevator1.on("floor_button_pressed", function(floorNum) { | |
elevator1.goToFloor(floorNum); | |
const currentFloor = elevator1.currentFloor(); | |
const destinationQueue = elevator1.destinationQueue; | |
const floorDownQueue = []; | |
floors.forEach(floor => { | |
if (floor.buttonStates.down.length > 0) floorDownQueue.push(floor.level) | |
}) | |
elevator1.destinationQueue = [ | |
...new Set([...destinationQueue, ...floorDownQueue]) | |
].sort((b, a) => (Number(a < currentFloor) * 10 + a) - (Number(b < currentFloor) * 10 + b)) | |
elevator1.checkDestinationQueue(); | |
}) | |
floors.forEach(function (floor) { | |
floor.on("up_button_pressed", function() { | |
elevator.goToFloor(floor.floorNum()); | |
}) | |
floor.on("down_button_pressed", function() { | |
elevator1.goToFloor(floor.floorNum()); | |
}) | |
}) | |
}, | |
update: function(dt, elevators, floors) { | |
// We normally don't need to do anything here | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment