Elevator is a class declared in
Elevator.h and is responsible for representing where an elevator is inside the building along with where it is going. It will service requests that come from the
boolrepresenting whether the elevator is currently moving to service a request. When an elevator is servicing, it cannot receive another command.
intrepresenting which floor the elevator currently resides
intrepresenting which floor an elevator is trying to reach. If an elevator reaches its targetFloor, it will no longer be
servicingand will be eligible to service another request.
Many member functions have been written for you. Please refer to their RME’s for use reference.
You will be writing the implementation for the following functions:
/** * Requires: currentTime is valid * Modifies: currentFloor, servicing * Effects: Moves the value of current floor by 1 in the direction of the target * floor if the currentTime is divisible by TICKS_PER_ELEVATOR_MOVE and * the elevator is servicing a request. * If current floor is the target floor, servicing is set to false */ void tick(int currentTime);
tick is the function that advances the game one turn. In the context of
Elevator, this involves moving it in the correct direction if it is servicing a request. Specifically, we do the following.
- If the
currentTimeis divisible by
TICKS_PER_ELEVATOR_MOVEand it is currently servicing a request, we move
currentFloorone floor closer to its
targetFloor. If the elevator is already at its
targetFloor, the elevator does not move.
- If, after moving the elevator, it has reached its
targetFloor, we set
servicingto false. It can now service another request.
/** * Requires: 0 <= floorNum <= NUM_FLOORS * Modifies: targetFloor, servicing * Effects: Sets the targetFloor and marks the Elevator as currently servicing */ void serviceRequest(int floorNum);
This is the function that the
Building class will use to control its
Elevators. It will give the
floorNum which constitutes a request to send the
Elevator to that
Floor. This will update the
targetFloor, and mark it as
servicing until it reaches that floor (remember that
tick will be responsible for moving the elevator if it is