diff options
-rw-r--r-- | ee1301/wk5/hw5_directory/mazeRunner_v1.cpp | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/ee1301/wk5/hw5_directory/mazeRunner_v1.cpp b/ee1301/wk5/hw5_directory/mazeRunner_v1.cpp deleted file mode 100644 index a938386..0000000 --- a/ee1301/wk5/hw5_directory/mazeRunner_v1.cpp +++ /dev/null @@ -1,145 +0,0 @@ -#include <iostream> -#include <iomanip> -#include <fstream> -#include <string> -using namespace std; -ifstream fin; -ofstream fout; - -const char BLANK = '-'; -const char ROBOT = 'X'; -const char GOAL = 'O'; -const char WALL = 'W'; -const int screen_num_lines = 25; -const int lengthX = 10; // for now we only support square boards -const int lengthY = 10; // it "should" work with non-square, YMMV -// Board is described by the following coordinate system: -// 0 --> +X -// | -// | -// V -// +Y - -void initBoardDefault(char board[lengthX][lengthY], int &xPos, int &yPos); -void initBoardCustom(char board[lengthX][lengthY], int &xPos, int &yPos); -void clearScreen(); -void showGrid(char board[lengthX][lengthY]); - -bool hasChar(char board[lengthX][lengthY], char findMe); -void updateGrid(char board[lengthX][lengthY], int &xPos, int &yPos, char action); - -int main() -{ - srand(time(NULL)); - char board[lengthX][lengthY] = {0}; - int xPos = 0, yPos = 0; - fin.open("maze.txt"); //maze.txt is in the directory that it is run in - if (!fin.is_open()) //If a custom maze does not exist, generate one automatically - { - initBoardDefault(board, xPos, yPos); - } else { - initBoardCustom(board, xPos, yPos); - } - while(hasChar(board, GOAL)) - { - char action; - clearScreen(); - showGrid(board); - cout << "Where would you like to go? (l, r, u, d) " << endl; - cin >> action; - - updateGrid(board, xPos, yPos, action); - } - - clearScreen(); - showGrid(board); - cout << "You found the cookie! Congratulations!\n"; - - return 0; -} - -//The default (no custom file) maze is procedurally generated -void initBoardDefault(char board[lengthX][lengthY], int &xPos, int &yPos) { - for(int curRow=0; curRow < lengthY; curRow++) { - for(int curCol=0; curCol < lengthX; curCol++) { - if ( (rand() % 5) + 1 == 4 || (rand() % 10) + 1 == 7) { - board[curCol][curRow] = WALL; - } else { - board[curCol][curRow] = BLANK; - } - } - } - - - board[0][0] = GOAL; - board[lengthX/2][lengthY/2] = ROBOT; - - xPos = lengthX/2; - yPos = lengthY/2; -} - -void initBoardCustom(char board[lengthX][lengthY], int &xPos, int &yPos) -{ - for (int curRow = 0; curRow < lengthY; curRow++) - { - for (int curCol = 0; curCol < lengthX; curCol++) - { - fin >> board[curCol][curRow]; - if (board[curCol][curRow] == 'X') { - board[curCol][curRow] = ROBOT; - xPos = curCol; - yPos = curRow; - } - } - } - -} - -bool hasChar(char board[lengthX][lengthY], char findMe) { - for(int curRow=0; curRow < lengthY; curRow++) { - for(int curCol=0; curCol < lengthX; curCol++) { - if(board[curCol][curRow] == findMe) { - return true; - } - } //end curCol loop - } // end curRow loop - - return false; -} - -void clearScreen() { - for(int i = 0;i<screen_num_lines;i++) { - cout << endl; - } -} - -void showGrid(char board[lengthX][lengthY]) { - for(int curRow=0; curRow < lengthY; curRow++) { - for(int curCol=0; curCol < lengthX; curCol++) { - cout << board[curCol][curRow]; - } // end curCol loop - cout << endl; - } // end curRow loop -} - -void updateGrid(char board[lengthX][lengthY],int & xPos, int & yPos,char action) { - int oldX = xPos; int oldY = yPos; - if (action == 'l' && xPos > 0) { - xPos--; - } else if(action == 'r' && xPos < lengthX - 1) { - xPos++; - } else if(action == 'u' && yPos > 0) { - yPos--; - } else if(action == 'd' && yPos < lengthY - 1) { - yPos++; - } - //Hit detection - if (board[xPos][yPos] == WALL) { - xPos = oldX; - yPos = oldY; - board[xPos][yPos] = WALL; - } else { - board[oldX][oldY] = BLANK; - } - board[xPos][yPos] = ROBOT; -} |