First of all, this is my first post on this forum =)
k, anywho..
im having problems with the algorithm of the mouse getting through a maze created. The maze is a 2-dim char array, the walls consists of X's and the inside is randomly generated.
The mouse has 2 variables, the x and y coordinate, and the direction
When the mouse runs into a wall in the direction it's facing, the mouse just goes up again, and down, and repeats infinitively.
I have tried many things, but none have worked.
PS: i can send the working exe if needed.
Code://in main.cpp do { if(takeastep(maze, x, y, direction)) { counter ++; showmouse(x, y, width, height, counter, direction); } delay(timer); }while(!entrance(x, y, entout) && !exit(x, y, entout, width)); bool takeastep(const char * const * const maze, unsigned int & x, unsigned int & y,char & direction) { bool outcome; if(righthandonwall(maze, x, y, direction)) { if(!straightahead(maze, x, y, direction)) { stepstraight(x, y, direction); outcome = true; return outcome; } while(straightahead(maze, x, y, direction)) { rotate90counter(direction); } stepstraight(x,y,direction); outcome = true; return outcome; } else { rotate90clock(direction); stepstraight(x, y, direction); outcome = true; return outcome; } } bool righthandonwall(const char * const * const maze, unsigned int x, unsigned int y, char direction) { bool answer = false; if (direction == 'N') if(maze[y][x+1] == 'X') answer = true; if (direction == 'S') if(maze[y][x-1] == 'X') answer = true; if (direction == 'E') if(maze[y+1][x] == 'X') answer = true; if (direction == 'W') if(maze[y-1][x] == 'X') answer = true; return answer; } bool straightahead(const char * const * const maze, unsigned int x, unsigned int y, char direction) { bool answer = false; if (direction == 'N') if(maze[y-1][x] == 'X') answer = true; if (direction == 'S') if(maze[y+1][x] == 'X') answer = true; if (direction == 'E') if(maze[y][x+1] == 'X') answer = true; if (direction == 'W') if(maze[y][x-1] == 'X') answer = true; return answer; } void stepstraight(unsigned int & x, unsigned int & y, char direction) { if (direction == 'N') y--; if (direction == 'S') y++; if (direction == 'E') x++; if (direction == 'W') x--; } void rotate90counter(char & direction) { if (direction == 'N') direction = 'W'; if (direction == 'S') direction = 'E'; if (direction == 'E') direction = 'N'; if (direction == 'W') direction = 'S'; } void rotate90clock(char & direction) { if (direction == 'N') direction = 'E'; if (direction == 'S') direction = 'W'; if (direction == 'E') direction = 'S'; if (direction == 'W') direction = 'N'; }
Any help is appreciated!



LinkBack URL
About LinkBacks




