软件综合实习
} cout<<\【括号内容:(行坐标,列坐标,方向)】\\n\ break; } case 3:
{ int m=0,n=0; //定义迷宫的长和宽 string **maze; //定义二维指针存取迷宫 maze=GetMaze(m,n);
//调用GetMaze(int &m,int &n)函数,得到迷宫
if(Mazepath(maze,m,n))
//调用Mazepath(int **maze,int m,int n)函数获取路径
{
printf(\┣━━━━━━━━━【迷宫路径探索】━━━━━━━━━┫ \\n\
printf(\┃ ┃ \\n\
printf(\┃ ⑴〖输入迷宫路径〗 ┃ \\n\
printf(\┃ ⑵〖结束探索〗 ┃ \\n\
printf(\┃ ⑶〖清空屏幕〗 ┃ \\n\
printf(\┃ ┃ \\n\
printf(\┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ \\n\
printf(\ }
case 4:
{ system(\ //清屏函数
printf(\┣━━━━━━━━━【迷宫路径输出】━━━━━━━━━┫ \\n\
printf(\┃ ┃ \\n\
printf(\┃ ⑴〖输出迷宫的二维图〗 ┃ \\n\
printf(\┃ ⑵〖输出迷宫的路径〗 ┃ \\n\
printf(\┃ ⑶〖重新输入迷宫路径〗 ┃ \\n\
printf(\┃ ⑷〖退空屏幕〗 ┃ \\n\
printf(\┃ ⑸〖结束探索〗 ┃ \\n\
信息科学与工程学院 - 15- 网络工程11-1班
软件综合实习
printf(\┃ ┃ \\n\
printf(\┣━━━━━━━━━━━━━━━━━━━━━━━━━━┫ \\n\
printf(\ break; } case 5:
exit(0); default:
printf(\【输入有误】,请重新输入!\\n\ } } }
//╞╪╪╪╪╪╪╪╪╪╪╪【恢复函数】╪╪╪╪╪╪╪╪╪╪╪╪╪╪╡ void Restore(string **maze,int m,int n) {
int i,j;
for(i=0;i if(maze[i][j]==\ //恢复探索过位置,即把-1恢复为0 maze[i][j]=\ } } 4、调试分析 在调试过程中,遇到很多问题,应该设置什么数据结构和类型,一直在纠结,经过反复思考和调试,最后都解决了。 4.1.用“1”“0”来表示迷宫的障碍和通路,便于用户操作,用“→”“↓” “←”“↑”表示方向,“■”表示外墙,比较方便用户观察。 4.2.在设定入口和出口坐标时,定义了全局变量类型,方便函数间调用。 4.3.还有就是数据结构问题,实现输出时的二维通路,开始是想通过dir的值实现输出0、1的二维图,但是觉得不直观,所以定义了string **maze[x][y],从而可以存储字符,把“→”“↓”“←”“↑”的通路存储起来,实现了直观的二维通路的想法。 信息科学与工程学院 - 16- 网络工程11-1班 软件综合实习 5、使用说明 5.1.程序名为 迷宫问题.exe,运行环境为DOS。 5.2.程序执行后显示主菜单: 5.2.1主菜单功能选择: 选择⑴〖输入迷宫路径〗 选择⑵〖结束探索〗 选择⑶〖清空屏幕〗 5.2.2子菜单功能选择: 选择⑴〖输出迷宫的二维图〗 选择⑵〖输出迷宫的路径〗 选择⑶〖重新输入迷宫路径〗 选择⑷〖退空屏幕〗 选择⑸〖结束探索〗 信息科学与工程学院 - 17- 网络工程11-1班 软件综合实习 6、测试结果 ⑴〖输入迷宫路径〗 6.2输出子菜单: ⑴〖输出迷宫的二维图〗 信息科学与工程学院 - 18- 网络工程11-1班 软件综合实习 ⑵〖输出迷宫的路径〗 ⑶〖重新输入迷宫路径〗 信息科学与工程学院 - 19- 网络工程11-1班