diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..0322a34 Binary files /dev/null and b/.DS_Store differ diff --git a/starter_code/elevator.js b/starter_code/elevator.js index 5339f35..b0f5508 100644 --- a/starter_code/elevator.js +++ b/starter_code/elevator.js @@ -1,19 +1,88 @@ class Elevator { - constructor(){ - this.floor = 0; - this.MAXFLOOR = 10; - this.requests = []; - } - - start() { } - stop() { } - update() { } - _passengersEnter() { } - _passengersLeave() { } - floorUp() { } - floorDown() { } - call() { } - log() { } + constructor() { + this.floor = 0; + this.MAXFLOOR = 10; + this.requests = []; //floors where the elevator must stop + this.direction = ""; + this.waitingList = []; //persons waiting the elevator + this.passengers = []; //persons inside teh elevator + } + + start() { + () => + setInterval(() => { + this.update(); + }, 1000); + } + + stop() { + clearInterval( + setInterval(() => { + this.update(); + }, 1000) + ); + } + + _passengersEnter() { + if (this.waitingList.length !== 0) { + let personsEntering = this.waitingList.filter( + passenger => passenger.originFloor === this.floor + ); + for (let i = 0; i < personsEntering.length; i++) { + console.log(`${personsEntering[i].name} has just entered the elevator`); + this.passengers.push(personsEntering[i]); + this.requests.push(personsEntering[i].destinationFloor); + this.requests = this.requests.filter(floor => floor !== this.floor); + } + this.waitingList = this.waitingList.filter( + passenger => passenger.originFloor !== this.floor + ); + } + } + + _passengersLeave() { + let personsLeaving = this.passengers.filter( + passenger => passenger.destinationFloor === this.floor + ); + for (let i = 0; i < personsLeaving.length; i++) { + console.log(`${personsLeaving[i].name} has left the elevator`); + this.requests = this.requests.filter(floor => floor !== this.floor); + } + this.passengers = this.passengers.filter( + passenger => passenger.destinationFloor !== this.floor + ); + } + + floorUp() { + if (this.floor < this.MAXFLOOR) { + this.floor += 1; + this.direction = "up"; + } else { + console.log("you already reached the last floor"); + } + } + + floorDown() { + if (this.floor > 0) { + this.floor -= 1; + this.direction = "down"; + } else { + console.log("you already reached the ground floor"); + } + } + + call(person) { + this.waitingList.push(person); + this.requests.push(person.originFloor); + } + + update() { + this.log(this.direction, this.floor); + } + + log() { + console.log(`Direction:${this.direction} | Floor:${this.floor}`); + } } module.exports = Elevator; diff --git a/starter_code/index.js b/starter_code/index.js index 5e480eb..274c45d 100644 --- a/starter_code/index.js +++ b/starter_code/index.js @@ -1 +1,44 @@ -const Elevator = require('./elevator.js'); +console.log("I'm executed"); +const Elevator = require("./elevator.js"); +const Person = require("./person.js"); + +let elevator = new Elevator(); +elevator.floorUp(); +elevator.floorUp(); + +let person1 = new Person("john", 2, 3); +let person2 = new Person("janny", 2, 4); +let person3 = new Person("jany", 0, 6); +elevator.call(person1); +elevator.call(person2); +elevator.call(person3); +console.log(elevator.floor); //2 +console.log(elevator.requests); +console.log(elevator.waitingList); + +elevator._passengersEnter(); +console.log(elevator.passengers); +console.log(elevator.requests); +console.log(elevator.waitingList); + +elevator.floorUp(); +elevator._passengersLeave(); +console.log(elevator.floor); //3 +console.log(elevator.passengers); +console.log(elevator.requests); + +elevator.floorUp(); +elevator._passengersLeave(); +console.log(elevator.floor); //4 +console.log(elevator.passengers); +console.log(elevator.requests); +console.log(elevator.waitingList); + +elevator.floorDown(); +elevator.floorDown(); +elevator.floorDown(); +elevator.floorDown(); +elevator._passengersEnter(); +console.log(elevator.floor); //0 +console.log(elevator.passengers); +console.log(elevator.requests); diff --git a/starter_code/person.js b/starter_code/person.js index fddcc22..0dbcccf 100644 --- a/starter_code/person.js +++ b/starter_code/person.js @@ -1,5 +1,8 @@ class Person { - constructor(name, originFloor, destinationFloor){ + constructor(name, originFloor, destinationFloor) { + this.name = name; + this.originFloor = originFloor; + this.destinationFloor = destinationFloor; } }