走迷宫:
数据分析:
-
定义二维字符数组作为迷宫地图
-
定义变量来记录角色的位置 x y
逻辑分析:
进入死循环:
-
显示地图
-
判断是否到达出口
如果是:程序结束
-
获取方向键并处理
判断前方是不是路' '
如果是路:
1、把旧位置编程' '
2、把新位置变成'@'
3、更新角色位置坐标 x y
下面是代码实例展示
#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(8 == man_x && 9 == man_y)
{
printf("游戏胜利,过了%lu秒!\n",
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;
}
}
}