Code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<Windows.h>
#define ROWS 9
#define COLS 16
void show(char maze[ROWS][COLS]);
int main(void)
{
int ratr=7,ratc=1, r, c, goal=0;
char maze [ROWS][COLS] = {
{'S','S','S','S','S','S','S','S','S','S','S','S','S','S','S','S'},
{'S',' ',' ',' ',' ',' ',' ',' ','X',' ','X',' ',' ',' ',' ','S'},
{'S','X','X',' ','X','X','X',' ','X',' ','X',' ','X','X','X','S'},
{'S',' ',' ',' ',' ',' ','X',' ',' ',' ','X',' ',' ',' ',' ','S'},
{'S',' ','X','X','X',' ','X',' ','X',' ','X',' ','X','X',' ','S'},
{'S',' ','X','X','X',' ','X',' ','X',' ','X',' ','X','X',' ','S'},
{'S',' ','X',' ',' ',' ',' ',' ','X',' ','X',' ','X','X',' ','S'},
{'S',' ','X',' ',' ',' ',' ',' ','X',' ',' ',' ','X','X',' ','S'},
{'S','S','S','S','S','S','S','S','S','S','S','S','S','S','S','S'}
};
char rat, cheese, vector;
rat = '*';
cheese = 178; //²
maze[7][14] = cheese;
maze[ratr][ratc] = rat;
while (!goal) {
show(maze);
getch();
maze[ratr][ratc] = ' ';
if(maze[ratr-1][ratc]==cheese)
ratr--;
else if(maze[ratr+1][ratc]==cheese)
ratr++;
else if(maze[ratr][ratc-1]==cheese)
ratc--;
else if(maze[ratr][ratc+1]==cheese)
ratc++;
if (maze[ratr-1][ratc] == ' ' && vector != 'd') {
ratr--;//Towards Up
vector = 'u';
}
else if(maze[ratr-1][ratc] != ' ' && vector == 'u') {
vector = 'd';
}
else if (maze[ratr][ratc+1] == ' ' && vector != 'l') {
ratc++;//Right
vector='r';
}
else if(maze[ratr][ratc+1] != ' ' && vector == 'r') {
vector = 'l';
}
else if (maze[ratr+1][ratc] == ' ' && vector !='u') {
ratr++;//Down
vector = 'd';
}
else if (maze[ratr][ratc-1] == ' ' && vector != 'r') {
ratc--;//Left
vector = 'l';
}
/*else if (maze[ratr-1][ratc] != 'X')
ratr--;
else if (maze[ratr+1][ratc] != 'X')
ratr++;
else if (maze[ratr][ratc-1]!='X')
ratc--;
else if (maze[ratr][ratc+1]!='X')
ratc++;*/
if(maze[ratr][ratc]==cheese) {
goal=1;
printf("\n\nI LOVE this cheese!\n");
maze[ratr][ratc] = rat;
show(maze);
}
maze[ratr][ratc] = rat;
}
printf("\n\n\t\t\t press enter when ready");
(void) getchar();
return 0;
}
void show(char maze[ROWS][COLS]) {
int r, c;
putchar('\n');
for (r=0;r<ROWS;r++) {
for(c=0;c<COLS;c++) {
printf("%c",maze[r][c]);
}
printf("\n");
}
}
It finds the cheese in this case, but wouldn't find it in other maze configurations.