数据分析:
1、定义一个二维数组作为迷宫地图
2、人用@表示,#表示迷宫的墙
3、记录所化的时间(time函数)
逻辑分析:
一个死循环
进入死循环:
1、显示地图(遍历二维数组)
2、等待获取命令(方向键)并处理
判断前方是不是路’ ’
如果是:
1、把旧位置变成’ ’
2、把新位置变成‘@’
3、更新角色位置坐标 x y
3、判断是否到达出口(可以提到2之前)
如果是:程序结束
不是:继续执行程序
#include#include #include #include int main(int argc,const char* argv[]) { //地图 char maze[10][10] = { {'#','#','#','#','#','#','#','#','#','#'}, {'#',' ','#','#','#',' ',' ',' ','#','#'}, {'#','@','#','#','#',' ','#',' ','#','#'}, {'#',' ','#','#','#',' ','#',' ',' ','#'}, {'#',' ','#','#','#',' ','#','#',' ','#'}, {'#',' ','#','#','#',' ','#','#',' ','#'}, {'#',' ',' ',' ','#',' ','#','#',' ',' '}, {'#','#','#',' ','#',' ','#','#','#','#'}, {'#','#','#',' ',' ',' ','#','#','#','#'}, {'#','#','#','#','#','#','#','#','#','#'}, }; //记录角色的位置坐标 char man_x = 2,man_y=1; //计入游戏开始时间 time_t start_time = time(NULL); for(;;)//死循环 { //清理屏幕 system("clear"); //显示地图打印二位数组 for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { printf("%c ",maze[i][j]); } printf("n"); } //判断是否到达出口 if(man_x == 6 && man_y == 9) { printf("n你逃出迷宫了!n"); printf("你花费了%lu秒!",time(NULL)-start_time); return 0; } //方向键处理 switch(getch()) { case 183://人向上的判断 if(' ' == maze[man_x-1][man_y]) { maze[man_x][man_y] = ' '; maze[--man_x][man_y] = '@'; } break; case 184://人向下的判断 if(' ' == maze[man_x+1][man_y]) { maze[man_x][man_y] = ' '; maze[++man_x][man_y] = '@'; } break; case 186://人向左的判断 if(' ' == maze[man_x][man_y-1]) { maze[man_x][man_y] = ' '; maze[man_x][--man_y] = '@'; } break; case 185://人向右的判断 if(' ' == maze[man_x][man_y+1]) { maze[man_x][man_y] = ' '; maze[man_x][++man_y] = '@'; } break; } } return 0; }
结果实例:



