#include"stdio.h"??
#include"windows.h"??
#define?max?100????????//设置迷宫的最大长和宽??
#define?TU?'-'?????????//宏定义当迷宫能够走通时非通路路线的图形??
#define?LU?'#'?????????//宏定义当迷宫能够走通时通路路线的图形??
??
/*结构体中node存放群找出路时当前节点的数据,??
zhan[]存放堆栈中的各个节点的数据??
move[]存放上下左右四个方位*/??
struct?yu_su??
{??
????int?row;??//存放行号??
????int?col;??//存放列号??
????int?dir;??//存放4个方位,?0为右,?1为下,?2为左,?3为上??
}node,zhan[max],move[4]={{1,?0,?0},?{0,?1,?0},?{-1,?0,?0},?{0,?-1,?0}};??
??
/*mi_row存放迷宫的行数,?mi_col存放迷宫的列数,make[max][max]对迷宫各个节点是否遍历进行标记*/??
int?mi_row?=?0,?mi_col?=?0,?mark[max][max];??
??
/*对迷宫进行初始化*/??
int?chu_shi(int?mi_gong[max][max])????
{??
????int?choise,temp_col?=?0;??
????char?temp;??
????printf("作者:侯青青?\t\t\t\t?完成时间:2010.07.15\n\n");??
????printf("?-------------------------------迷宫游戏开始---------------------------------");????
????printf("\n请在??迷宫矩阵图.txt??文件中输入迷宫");??
????printf("\n迷宫矩阵左上角第一个元素为迷宫入口,右下角最后一个元素为迷宫出口");??
????printf("\n矩阵中数字0代表可通过,数字1代表有障碍物");??
????while(1)???????????????????????????????????????????????????//判断迷宫文件是否已经准备好??
????{??
????????printf("\n\n请问是否将迷宫放入??迷宫矩阵图.txt??文件中:");??
????????printf("\n??1.已经放入");??
????????printf("\n??2.未放入,退出程序将迷宫放入\n\n请选择相应的数字:?");??
????????scanf("%d",?&choise);??
????????if(choise?==?1?||?choise?==?2)??
????????????break;??
????????else??
????????????printf("\n选择错误,请重新选择!");??
????}??
????if(choise?==?2)?????//迷宫文件未准备好,退出程序??
????{??
????????printf("请按?任意键+回车?退出程序!\n");??
????????return?0;??
????}??
????else????????????????//迷宫文件准备好了,从文件中将迷宫读出??
????{??
????????FILE?*fp;??
????????if((fp?=?fopen("迷宫矩阵图.txt",?"r"))?==?NULL)??//如果不能打开文件,提示用户,并退出程序??
????????{??
????????????printf("\n不能打开?迷宫矩阵图.txt?文件,请检查文件知否存在或正确!");??
????????????return?0;??
????????}??
????????while(1)?//将迷宫矩阵的行号存入mi_row中,列号存入mi_col中,并检查迷宫矩阵的行列元素数是否都相等??
????????{??
????????????temp?=?fgetc(fp);??
????????????if(temp?==?EOF)??//文件读取完,跳出循环??
????????????{??
????????????????if(temp_col?!=?mi_col)???//如果迷宫矩阵的列号不是全都相同,显示提示语,并退出程序??
????????????????{??