走迷宫:
1、定义二维字符数组作为迷宫
2、定义变量记录老鼠的位置
3、获取游戏开始时间
3、进入循环
1、清理屏幕,使用system调用系统命令。
2、显示迷宫(遍历二维字符数组)
3、检查是否到达出口
获取游戏结束时间,计算出走出迷宫用了多少秒。
4、获取方向键并处理
判断接下来要走的位置是否是路,
1、把旧位置赋值为空格
2、把新位置赋值为老鼠
3、把记录老鼠位置的变量改变。
注意:
time(NULL)获取自 1970-1-1 00:00:00 到现在过了多少秒。
获取方向键使用stdlib.h头文件中的getch函数
把getch.h文件复制到/usr/include/
sudo cp getch.h /usr/include/
sudo chmod +r /usr/include/getch.h
183 上
184 下
185 右
186 左
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <getch.h>
int main(int argc,const char* argv[])
{
char maze[10][10]={
{'#','#','#','#','#','#','#','#','#','#',},
{'#','@','#','#','#','#','#','#','#','#',},
{'#',' ','#','#','#','#','#','#','#','#',},
{'#',' ',' ',' ',' ','#','#','#','#','#',},
{'#',' ',' ','#',' ','#','#','#','#','#',},
{'#','#','#','#',' ','#','#','#','#','#',},
{'#','#','#','#',' ',' ',' ',' ',' ','#',},
{'#','#','#','#','#','#','#','#',' ','#',},
{'#','#','#','#','#','#','#','#',' ',' ',},
{'#','#','#','#','#','#','#','#','#',' ',},
};//先定义一个二维数组,当作地图
int m_x=1,m_y=1;
time_t star_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(9==m_x&&9==m_y)
{
printf("恭喜你走出迷宫,共用时%u秒!\n",time(NULL)-star_time);
return 0;//判断成功条件
}
switch(getch())//定义控制键盘
{
case 183://上
if(0!=m_x&&' '==maze[m_x-1][m_y])
{
maze[m_x][m_y]= ' ';
maze[--m_x][m_y]='@';
}
break;
case 184://下
if(9!=m_x&& ' '==maze[m_x+1][m_y])
{
maze[m_x][m_y]=' ';
maze[++m_x][m_y]='@';
}
break;
case 185://左
if(9!=m_x&& ' '==maze[m_x][m_y+1])
{
maze[m_x][m_y]= ' ';
maze[m_x][++m_y]='@';
}
break;
case 186://右
if(9!=m_x&& ' '==maze[m_x][m_y-1])
{
maze[m_x][m_y]= ' ';
maze[m_x][--m_y]='@';
}
break;
}
}
}