Please help friends! I have been stuck for a couple hours getting all of the templates and classes ready. I am stuck trying to get the program structure to even compile. I wish I knew what needed to be done with the classes and templates because I could code the rest. Any help would be amazing!
Your Roomba can only go left, right, up, and down from its current location. It has a battery life that we will simulate as a maximum number of moves. In addition, the Roomba can be placed on any spot on the floor.
Your program will take the name of a file, battery life, and starting position as command line arguments with the –f (filename), -b (battery), -v (moves before viewing), –r (starting row) and –c (starting column) options. a.out –f floorplan.txt –b 100 –r 0 –c 0 –v 1
Catch Exceptions with File I/O: You will try to open the file for input, but if it is not present, then you must catch the exception and let the user know that he/she must supply a floor plan file in order to run the simulation. The file with the floor plan doesn’t contain dimensions. It only contains the cells of floor and potential objects, indicated by ‘f’ or ‘d’ for floor (or dirty floor)
For example:
f f f f
f f f f
f f f f
f f f f
Use classes with a Template, “Is a”, “Has a”, and “Uses” relationship: Here are the classes you need to have:
Please help friends! I have been stuck for a couple hours getting all of the templates and classes ready. I am stuck trying to get the program structure to even compile. I wish I knew what needed to be done with the classes and templates because I could code the rest. Any help would be amazing!
Your Roomba can only go left, right, up, and down from its current location. It has a battery life that we will simulate as a maximum number of moves. In addition, the Roomba can be placed on any spot on the floor.
Your program will take the name of a file, battery life, and starting position as command line arguments with the –f (filename), -b (battery), -v (moves before viewing), –r (starting row) and –c (starting column) options. a.out –f floorplan.txt –b 100 –r 0 –c 0 –v 1
Catch Exceptions with File I/O: You will try to open the file for input, but if it is not present, then you must catch the exception and let the user know that he/she must supply a floor plan file in order to run the simulation. The file with the floor plan doesn’t contain dimensions. It only contains the cells of floor and potential objects, indicated by ‘f’ or ‘d’ for floor (or dirty floor)
For example:
f f f f
f f f f
f f f f
f f f f
Use classes with a Template, “Is a”, “Has a”, and “Uses” relationship: Here are the classes you need to have:
Please help friends! I have been stuck for a couple hours getting all of the templates and classes ready. I am stuck trying to get the program structure to even compile. I wish I knew what needed to be done with the classes and templates because I could code the rest. Any help would be amazing!
Your Roomba can only go left, right, up, and down from its current location. It has a battery life that we will simulate as a maximum number of moves. In addition, the Roomba can be placed on any spot on the floor.
Your program will take the name of a file, battery life, and starting position as command line arguments with the –f (filename), -b (battery), -v (moves before viewing), –r (starting row) and –c (starting column) options. a.out –f floorplan.txt –b 100 –r 0 –c 0 –v 1
Catch Exceptions with File I/O: You will try to open the file for input, but if it is not present, then you must catch the exception and let the user know that he/she must supply a floor plan file in order to run the simulation. The file with the floor plan doesn’t contain dimensions. It only contains the cells of floor and potential objects, indicated by ‘f’ or ‘d’ for floor (or dirty floor)
For example:
f f f f
f f f f
f f f f
f f f f
Use classes with a Template, “Is a”, “Has a”, and “Uses” relationship: Here are the classes you need to have:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
template <typename T>
class Room {
private:
Floor f;
T *obj; //obj could be a Roomba, Person, etc.
public:
//The functionality of a room is to view it
…
void clean_room()
{
if(obj!=NULL)
obj->clean_floor(f);
}
};
class Floor {
private:
vector < vector <char> > v;
int obj_row; //Holds an object’s current row position
int obj_col; //Holds an object’s current col position
public:
//The functionality of a floor is to create the floor
//plan, as well as determining if an object’s
//position is at the edge of the room
…
};
class Roomba {
private:
int battery; //how many moves it can make
int total_moves; //total moves needed to clean
public:
//The Roomba needs to be able to clean a floor, and
//move left, right, up, down
…
};
class RandomRoomba : public Roomba {
private:
…
public:
…
};
class …Roomba : public Roomba { //for first AI Roomba
class …Roomba : public Roomba { //for second AI Roomba
|
You can decide the function names for each class and whether you need to define the Big Three for the class. However, you MUST have the class relationship, members, and functionality specified above. Be creative!!! Simulate the Roomba: Now, you need to simulate the Roomba cleaning the room. You know you have a Room with a Roomba that cleans a specific floor. It is your job in your simulation to find which Roomba can clean the room the fastest (or in the least amount of moves). Here is the simulation you need:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#include <iostream>
#include “./Room.hpp”
#include “./RandomRoomba.h”
…
using namespace std;
void choose_roomba(Room <Roomba> &r) {
int choice;
cout << “Which Roomba (1 – Random, 2 - ?, 3 - ?)? “;
cin >> choice;
if(choice == 1)
r.set_roomba(new RandomRoomba);
else if(choice ==2)
…
}
void simulate_roomba() {
Room <Roomba> r;
choose_roomba(r);
//More setup is needed for the Room
…
r.clean_room(); //Now clean it after everything is setup
…
}
int main(int argc, char *argv[]) {
simulate_roomba();
return 0;
}
|
Example output: After running a program with the file and command line arguments provided below, your program simulation might look something like the output below. (This is a very smart random!) a.out –f floorplan.txt –b 100 –r 0 –c 0 –v 1
Which Roomba (1 – Random, 2 - ?, 3 - ?)? 1
Beginning:
r f f f
f f f f
f f f f
Move 1:
c r f f
f f f f
f f f f
Move 2:
c c r f
f f f f
f f f f
Move 3:
c c c r
f f f f
f f f f
Move 4:
c c c c
f f f r
f f f f
Move 5:
c c c c
f f f c
f f f r
Move 6:
c c c c
f f f c
f f r c
Move 7:
c c c c
f f r c
f f c c
Move 8:
c c c c
f r c c
f f c c
Move 9:
c c c c
r c c c
f f c c
Move 10:
c c c c
c r c c
f f c c
Move 11:
c c c c
c c c c
f r c c
Move 12:
c c c c
c c c c
r c c c
Entire floor visited and cleaned in 12 moves!!!