C语言实现老鼠走迷宫(附源码)
CSDN源码下载:C语言实现老鼠走迷宫.zip
1、需求分析
利用二维数组创建一个随机迷宫或者自定义迷宫,再在迷宫中找到一条从起点到终点的路径,并用图形界面显示。
2、概要设计
3、详细设计
输入迷宫行数列数
创建迷宫外墙
If(随机迷宫)
{调用创建随机迷宫函数,创建随机迷宫
}
else(自定义迷宫)
{调用自定义迷宫函数,创建自定义迷宫
}
调用递归访问迷宫函数,寻找一条从入口到出口的路径
显示迷宫的图形界面
4、调试分析
该程序对迷宫行列数操作时一定要注意分清楚到底是对行操作还是对列操作,此处易混淆;递归访问函数较复杂;随机迷宫如果需要创建成功通过的迷宫需多次尝试。
5、用户使用说明
用户首先根据提示输入迷宫行数列数,再选择创建随机迷宫还是自定义迷宫(1为随机迷宫,2为自定义迷宫)。
如果创建随机迷宫输入1,接下来程序会自动创建随机迷宫,并对迷宫进行寻找出口操作,有出口则显示含有出口路径的迷宫图,没有出口则显示:没有找到出口!
如果创建自定义迷宫,则根据提示输入代表墙壁的2或者代表通道的0组成迷宫,
有出口则显示含有出口路径的迷宫图,没有出口则显示:没有找到出口!
6、运行结果
6.1有出口的自定义迷宫
6.2没有出口的随机迷宫
6.3有出口的随机迷宫
7、源程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int createMaze(); //创建随机迷宫
int createFreeMaze(); //创建自定义迷宫
void createWall(); //创建迷宫外墙
int visit(int row2, int col2) ;int startI = 1, startJ = 1; // 入口
int success = 0;
//迷宫数组
int maze[100][100];
int row = 0;
int col = 0;
//迷宫矩阵,2代表墙壁,0代表通道//创建迷宫外墙
void createWall()
{//创建迷宫外墙,第一行、第一列、最后一行、最后一列均为墙壁for(int i = 0; i < col; i++)//第一行maze[0][i] = 2;for(int i = 1; i < row; i++)//第一列maze[i][0] = 2;for(int i = 1; i < col; i++)//最后一行maze[row-1][i] = 2; for(int i = 1; i < row-1; i++)//最后一列maze[i][col-1] = 2;
}//创建随机迷宫
int createMaze()
{srand(time(0));for(int i = 1; i < row-1; i++){for(int j = 1; j < col-1; j++){if((rand()%100+1) % 2 == 0)maze[i][j] = 0;elsemaze[i][j] = 2;}}maze[1][1] = 0;maze[row-2][col-2] = 0;
}//创建自定义迷宫
int createFreeMaze()
{for(int i = 1; i < row-1; i++){//第一行,第一格为入口if(i == 1){printf("迷宫第%d行,共%d格: ",i,col-3);for(int j = 2; j < col-1; j++)scanf("%d",&maze[i][j]);}//最后一行,最后一格为出口else if(i == row-2) {printf("迷宫第%d行,共%d格:",i,col-3);for(int j = 1; j < col-2; j++)scanf("%d",&maze[i][j]);}else{printf("迷宫第%d行,共%d格:",i,col-2);for(int j = 1; j < col-1; j++)scanf("%d",&maze[i][j]);}}maze[1][1] = 0; //入口为通道maze[row-2][col-2] = 0; //出口为通道
}int visit(int row2, int col2)
{ int endI = row-2, endJ = col-2; // 出口//该点走过,标记为1maze[row2][col2] = 1; //走到终点,成功if(row2 == endI && col2 == endJ)success = 1; //向四个方向递归调用函数visit()if(success != 1 && maze[row2][col2+1] == 0) visit(row2, col2+1); if(success != 1 && maze[row2+1][col2] == 0) visit(row2+1, col2); if(success != 1 && maze[row2][col2-1] == 0) visit(row2, col2-1); if(success != 1 && maze[row2-1][col2] == 0) visit(row2-1, col2); //该点走过,但没成功,则该点重新置为0if(success != 1) maze[row2][col2] = 0; return success;
}int main(void)
{ int i, j;printf("请输入迷宫行数row(0<row<100):"); scanf("%d",&row);printf("请输入迷宫列数col(0<col<100):");scanf("%d",&col);createWall();//创建迷宫外墙int choice;printf("请选择创建随机迷宫还是自定义迷宫(1为随机迷宫,2为自定义迷宫):");scanf("%d",&choice);if(choice == 1){createMaze(); //创建迷宫}else if(choice == 2){printf("\n请输入自定义迷宫的墙壁和通道,2代表墙壁,0代表通道\n");createFreeMaze();}printf("\n显示迷宫:\n"); for(i = 0; i < row; i++){ for(j = 0; j < col; j++) {if(maze[i][j] == 2) printf("█"); else printf(" "); }printf("\n"); }if(visit(startI, startJ) == 0){printf("\n没有找到出口!\n"); }else { printf("\n显示路径:\n"); for(i = 0; i < row; i++) { for(j = 0; j < col; j++){ if(maze[i][j] == 2) printf("█"); else if(maze[i][j] == 1) printf("◇"); else printf(" "); } printf("\n"); } }system("pause");return 0;
}
C语言实现老鼠走迷宫(附源码)相关推荐
- c语言递归算法老鼠走迷宫详解,递归算法求老鼠走迷宫(C语言)
/*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选 ...
- 老鼠走迷宫C语言程序,老鼠走迷宫程序实例
/*-------------------------------------------------------------------------------------------- //文件名 ...
- fla 走迷宫游戏 源码_迷宫新玩法,果断一试
迷宫, 真的是谜一样的存在, 大到几十岁的成年人, 小到三岁小儿, 都对其没有抵抗力. 而迷宫君也是真给力, 除了能给人带来愉悦感与成就感, 还能同时锻炼专注力.空间感.思维力.视觉追踪等, 是儿童感 ...
- C语言数独辅助器(附源码)
数独游戏介绍 数独是源自瑞士的一种数学游戏.是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据 9×9 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫(3*3)内的数字均 ...
- C语言常用13种算法附源码
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105147802 常 ...
- 用GO语言开发editplus编辑器插件(附源码)
我要开发的插件功能极为简单,就是对用户选中的内容进行base64编码或解密工作. 其中所涉及的技术部分主要是GO语言程序开发和editplus插件配置的部分,首先我们来看一下GO语言代码的写法,如下: ...
- c语言 老鼠乘法,c语言-老鼠走迷宫逐步理解
c语言实现老鼠走迷宫 在没有智能手机的时代,不少人玩游戏会玩老鼠走迷宫这样的闯关游戏.每一关有着不同的地图场景,可能还会充斥着各种障碍. 老鼠走迷宫是经典的递回求解的算法题 我们用二维数组表示迷宫场景 ...
- 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)
C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...
- C语言-老鼠走迷宫(深度寻路算法)
老鼠走迷宫-c语言(基于深度优先的寻路算法) 这个是学校的课设,刚开始有点头疼,但是感觉越做越有意思了,于是就有如下代码,可能相较于大佬还有差距,但是这是我目前所能做的最优的程序了吧! 话不多说,说一 ...
最新文章
- WINCE之“系统事件”——System/Events
- 采用三层架构(JAVA)设计学生管理系统
- assert函数_PHP 之 assert()函数
- 设置第一个字母字体变大并且所有字母大小写 及下划线
- 在c语言中定义共用型数据类型的关键字是,C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键...
- 【python+flume+kafka+spark streaming】编写word_count入门示例
- Node.js TLSWrap 实现中的释放后使用漏洞分析
- 软件工程师的技能知识图谱0.1(偏后台方向)
- 朝鲜黑掉韩国政府版 Word
- tensorflow之视频质量诊断
- ubuntu 开发环境的配置 (转)
- sqlserver日期函数大全
- 基于QT和Rapidjson的Json编辑器
- 一键DDOS防火墙安装程序
- 2022茶艺师(初级)操作证考试题库及在线模拟考试
- 19隆冬的倔强(updating)
- Android Tethering
- 关于 git 的用法
- useNavigate使用报错
- FLD5302和FLD5303升压充电芯片