c语言 走迷宫问题

#include<stdio.h>
#define N 10
int main(){
char maze[N][N] = {
'#', ' ', '#', '#', '#', '#', '#', '#', '#', '#',
'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#',
'#', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#',
'#', ' ', ' ', ' ', ' ', '#', '#', ' ', ' ', '#',
'#', ' ', '#', '#', '#', ' ', ' ', ' ', ' ', '#',
'#', ' ', ' ', ' ', '#', ' ', '#', ' ', '#', '#',
'#', ' ', '#', ' ', ' ', ' ', '#', ' ', ' ', '#',
'#', ' ', '#', '#', '#', ' ', '#', '#', ' ', '#',
'#', '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
};
char copy[N][N];
int row, line, i, j;
char face;
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
copy[i][j] = maze[i][j];
}
}
//north,south,east,west
//find the entrance or end
//优先向右向前再向左转
for (i = 0; i < N; i++){
if (maze[0][i] == ' '){ row = 0; line = i; break; }
if (maze[i][0] == ' '){ row = i; line = 0; break; }
if (maze[N - 1][i] == ' '){ row = N - 1; line = i; break; }
if (maze[i][N - 1] == ' '){ row = i; line = N - 1; break; }
}
copy[row][line] = 'o';
if (row == 0){
face = 's';
row++;
}
if (line == 0){
face = 'e';
line++;
}
if (row == N - 1){
face = 'n';
row--;
}
if (line == N - 1){
face = 'w';
line--;
}
copy[row][line] = 'o';
while (row != (N - 1) && row != 0 && line != 0 && line != (N - 1)){
switch (face){
case 's':                    //south


if (maze[row][line - 1] == ' '){
line--;
face = 'w';
}
else{
if (maze[row + 1][line] == ' '){
row++;
}
else {
if (maze[row][line + 1] == ' '){
line++;
face = 'e';
}
else {
row--;
face = 'n';
}
}
}
copy[row][line] = 'o';
break;   //end south


case 'n':                              //north
if (maze[row][line + 1] == ' '){
line++;
face = 'e';
}
else{
if (maze[row - 1][line] == ' '){
row--;
}
else {
if (maze[row][line - 1] == ' '){
line--;
face = 'w';
}
else {
row++;
face = 's';
}
}
}
copy[row][line] = 'o';
break; //end north


case 'w':             //west


if (maze[row - 1][line] == ' '){
row--;
face = 'n';
}
else{
if (maze[row][line - 1] == ' '){
line--;
}
else {
if (maze[row + 1][line] == ' '){
row++;
face = 's';
}
else {
line++;
face = 'e';
}
}
}
copy[row][line] = 'o';
break;//end west


case 'e':                             //east


if (maze[row + 1][line] == ' '){
row++;
face = 's';
}
else{
if (maze[row][line + 1] == ' '){
line++;
}
else {
if (maze[row - 1][line] == ' '){
line++;
face = 'n';
}
else {
line--;
face = 'w';
}
}
}
copy[row][line] = 'o';
break;//end east


default:printf("无出口");


}
}//end while
for (i = 0; i < N; i++){
for (j = 0; j < N; j++){
printf("%c ", copy[i][j]);
}
printf("\n");
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/changer_WE/article/details/78156898