用C语言实现走迷宫

思考与准备

  首先,要实现老鼠走迷宫的效果,我们可以采用 二维数组 的方式,通过改变老鼠的坐标来实现走动的效果。

  我们额外用到的头文件有:

  • #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;
		}
	}
}

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值