Answer to Question #27745 in C++ for Miranda

Question #27745
I must get to the end of a simple maze using
A various bank of functions, whether is it Booleans, public voids, while, if else.. Etc
Cutting out all numbers is variables
What's the code for the right hand rule, so the robot my follow the right wall- leading it to the finishing point?
1
Expert's answer
2013-04-05T09:52:41-0400
#define NROWS 3 //you can put here your own values#define MCOLS 3


//for example you have such Maze
//where symbols:
// '.' = open
// 'S' = start
// 'G' = goal
// '+' = path
// 'c' = close

char maze[NROWS][MCOLS] = {
{'c','.','G'},
{'c','c','.'},
{'S','.','.'}
};

//you can use tail recursion to find path with the righthand rule static int steps; //here will be number of steps

int find_path(int x, int y) {
// If x,y isoutside maze, return false.
if ( x < 0|| x > MCOLS - 1 || y < 0 || y > NROWS - 1 )
returntrue;
// If x,y is the goal, return true.
if ( maze[y][x]== 'G') {
returntrue;
}


// If x,y is not open, return false.
if ( maze[y][x]!= '.' && maze[y][x] != 'S' )
return false;

// Mark x,ypart of solution path.
maze[y][x] ='+';
steps++;


// If find_pathNorth of x,y is true, return true.
if (find_path(x, y - 1) == true ) return true;

// If find_pathEast of x,y is true, return true.
if ( find_path(x + 1, y) == true ) returntrue;

// If find_pathSouth of x,y is true, return true.
if (find_path(x, y + 1) == true ) return true;

// If find_pathWest of x,y is true, return true.
if (find_path(x - 1, y) == true ) return true;

//mark therepeat steps
maze[y][x] ='x';


return false;
}

//so simply use this function to check the path in themaze and then display maze with simple cycles

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
APPROVED BY CLIENTS