题目:自行生成一张地图后,通过上下左右方向键控制老鼠走出迷宫并计算出所花费的时间。
1、先自行生成一张地图用于当作地图的二维数组
int arr[15][15]=
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,2,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,0,0,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0,1,1,1,1,1,1}
};
我们以1作为墙以'#'表示,0作为空白的路,2作为老鼠的位置以'#'表示,可以得到这么一张地图
2、记录老鼠行下标和列下标的变量
for(int i=0;i<15;i++)
{
for(int j=0;j<15;j++)
{
if(arr[i][j]==2)
{
key_row=i;
key_col=j;
}
}
}
3、记录游戏的开始时间 time(NULL) 系统会返回自 1970-01-01 00:00:00 到现在一共过了多少秒。时间函数需要用到头文件#include<stdlib.h> 具体使用方法为
int sce_begin=time(NULL);
主要讲一下c语言中getch()函数,需要用到#include<getch()>可以读取到按下键的返回值,这一题主要用到上下左右的方向键的返回值,上为183,下为184,左为186,右为185。我们已知获取到老鼠的位置,根据函数getch()所获得的方向键的返回值,对老鼠所在的二维数组下标进行改变。并对改变后的位置进行显示,要用到一个函数system("clear")清空当前面板,在遍历二维数组进行显示。
void show_arr(int arr[15][15])
{
system("clear");
for(int i=0;i<15;i++)
{
for(int j=0;j<15;j++)
{
if(arr[i][j]==1)
{
printf("# ");
}
else if(arr[i][j]==0)
{
printf(" ");
}
else printf("@ ");
}
printf("\n");
}
}