思考与准备
首先,要实现老鼠走迷宫的效果,我们可以采用 二维数组 的方式,通过改变老鼠的坐标来实现走动的效果。
我们额外用到的头文件有:
- #include<getch.h>
通过调用getch()函数来识别 上下左右的操作。
- #include<stdlib.h>
采用 system(“clear”);清理屏幕,实现视觉上的走动效果。
- #include<time.h>
time(NULL) ;
功能:返回自1970-1-1 0:0:0 到当前时间过了多少秒
记录游戏开始时间与结束时间,相减的到游戏所用时间。
大致思路
- 1、定义二维数组作为迷宫
0 <=> ’ ’ 代表可通行的路
1 <=> ‘#’ 代表墙壁
2 <=> ‘@’ 代表老鼠- 2、定义变量记录老鼠的坐标
- 3、记录游戏开始时间
- 4、进入死循环
1)、清理屏幕 system(“clear”);
2)、显示迷宫(遍历打印二维数组)
3)、获取方向键并处理
判断前方是否是路
如果是:1、老位置=0;
2、新位置=2
3、更新老鼠坐标
4)、判断是否到达出口
是:获取游戏结束时间
结束程序
代码
#include<stdio.h>
#include<getch.h>
#include<time.h>
#include<stdlib.h>
int main(int argc,const char* argv[])
{
char maze[10][10]={
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,0,0,0,1,1},
{1,0,1,1,1,0,1,0,1,1},
{1,2,1,0,0,0,1,0,1,1},
{1,0,1,0,1,1,1,0,1,1},
{1,0,1,0,1,1,1,0,1,1},
{1,0,0,0,1,1,1,0,1,1},
{1,1,1,1,1,1,1,0,0,0},
{1,1,1,1,1,1,1,1,1,1}
};
//设置老鼠初始坐标
int m_x=4,m_y=1;
//h获取开始时间
time_t start_time = time(NULL);
for(;;) //死循环
{
system("clear");
//打印地图
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
switch(maze[i][j])
{
case 0:printf(" ");break;
case 1:printf("# ");break;
case 2:printf("@ ");break;
}
}
printf("\n");
}
//判断是否到达终点
if(8==m_x && 9==m_y)
{
time_t end_time=time(NULL);
printf("游戏结束!用时%ds\n",end_time-start_time);
break;
}
switch(getch())
{
case 183://上
if(0==maze[m_x-1][m_y])
{
maze[m_x-1][m_y]=2;
maze[m_x][m_y]=0;
m_x=m_x-1;
}
break;
case 184://下
if(0==maze[m_x+1][m_y])
{
maze[m_x+1][m_y]=2;
maze[m_x][m_y]=0;
m_x=m_x+1;
}
break;
case 185://右
if(0==maze[m_x][m_y+1])
{
maze[m_x][m_y+1]=2;
maze[m_x][m_y]=0;
m_y=m_y+1;
}
break;
case 186://左
if(0==maze[m_x][m_y-1])
{
maze[m_x][m_y-1]=2;
maze[m_x][m_y]=0;
m_y=m_y-1;
}
break;
}
}
}
效果图



本文介绍了一个使用C语言实现的老鼠走迷宫程序。通过二维数组模拟迷宫,利用getch()获取用户输入,控制老鼠移动。当老鼠到达出口时,程序会显示所用时间。迷宫地图由0、1、2表示,分别代表道路、墙壁和老鼠的位置。程序通过清理屏幕和更新坐标来实现动态走动效果。
6950

被折叠的 条评论
为什么被折叠?



