数据分析:
1、定义一个二维数组作为迷宫地图
2、人用@表示,#表示迷宫的墙
3、记录所化的时间(time函数)
逻辑分析:
一个死循环
进入死循环:
1、显示地图(遍历二维数组)
2、等待获取命令(方向键)并处理
判断前方是不是路’ ’
如果是:
1、把旧位置变成’ ’
2、把新位置变成‘@’
3、更新角色位置坐标 x y
3、判断是否到达出口(可以提到2之前)
如果是:程序结束
不是:继续执行程序
#include<stdio.h>
#include<getch.h>
#include<stdlib.h>
#include<time.h>
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;
}
结果实例: