写一个简单的迷宫

迷宫首先要有地图,我们的地图用一个二维数组表示

这个地图很简单,当为1时表示可以走通,当为0时表示走不通

代码实现思路:

1.送一个能走的起始点

2.创建一个栈,每走一步,把走的位置压入栈中

3.当四个方向都走不通时,出栈一次,返回上一个位置,并把不通的路标记为4,走过的路标记为2.

4.当走出数组且不是起始位置,则该迷宫可走通。

代码:

(1)迷宫中走的方式

#include<iostream>
#include<assert.h>
#include<stack>
using namespace std;
#define ROW 10
#define COL 10
struct Seat
{Seat(int x,int y):_x(x),_y(y){ }int _x;int _y;
};class Maze
{
public:Maze(int map[ROW][COL]){assert(map);for (int i = 0; i < ROW;i++)for (int j = 0; j < COL; j++){_map[i][j] = map[i][j];}}void Point(){for (int i = 0; i < ROW; i++){for (int j = 0; j < COL; j++)cout << _map[i][j] << " ";cout << endl;}cout << endl;}bool Ispass(Seat s){if (Exit(s)){return true;}if (_map[s._x][s._y]==1)return true;return false;}bool Exit(Seat e){if (e._x<0||e._x>=ROW||e._y<0||e._y>=COL)return true;return false;}bool PlayMaze(Seat enter){stack<Seat> SeatStack;if (!Ispass(enter)){cout << "入口错误" << endl;return false;}_map[enter._x][enter._y] = 2;SeatStack.push(enter);while (!SeatStack.empty()){Seat ret=SeatStack.top();if (Exit(ret))return true;_map[ret._x][ret._y] = 2;Seat up(ret);    //向上up._x -= 1;if (Ispass(up)){SeatStack.push(up);continue;}Seat left(ret);    //向左left._y -= 1;if (Ispass(left)){SeatStack.push(left);continue;}Seat right(ret);    //向右right._y += 1;if (Ispass(right)){SeatStack.push(right);continue;}Seat down(ret);   //向下down._x += 1;if (Ispass(down)){SeatStack.push(down);continue;}_map[ret._x][ret._y] = 4;SeatStack.pop();}}private:int _map[ROW][COL];
};

(2)给出迷宫并给出起始点

int main()
{int mapArr[ROW][COL] = {{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },{ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },{ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 },{ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },{ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 },{ 0, 0, 0, 0, 1, 1, 1, 0, 0, 0 },{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } };Maze m1(mapArr);m1.Point();m1.PlayMaze(Seat(9,6));m1.Point();system("pause");return 0;
}

【C++】迷宫的简单实现相关推荐

  1. 量子计算机迷宫,一个简单的例子,带你读懂量子计算机

    原标题:一个简单的例子,带你读懂量子计算机 量子计算机和你的笔记本电脑在本质上是一样的,使用的都是二进制编码.计算机语言只用0和1来表达,这被称为"位",是计算机信息量最小的单位. ...

  2. java最简单的并查集(不想交集合)以及杭电1272

    并查集要有的一些属性:value:表示当前值,指针:(不一定是指针)指向父节点. 还有一个属性number:表示该树存在的总个数.(也可以用深度表示).我用小树插在大树上. 如果是普通数字表示的树,可 ...

  3. 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)

    前言 接上文的介绍,本文将主要介绍如何生成随机迷宫,在网上找到的资源也比较多,这里我选取了随机 Prim 算法生成迷宫,选择这个算法的理由如下: 算法思想简单,易于实现 生成的迷宫比较自然,不会出现明 ...

  4. java动画迷宫寻路_[人工智能] 迷宫生成、寻路及可视化动画

    前言 数据结构准备 迷宫生成算法 迷宫寻路算法 前言 本次带来迷宫相关的算法,迷宫的算法涉及到不少经典的图论算法,在游戏中NPC这些算法被大量的运用,深入了解和学习这些算法是为开发游戏打下坚实的基础. ...

  5. puzzle(0131)《迷宫》

    目录 一,普通迷宫 1,普通迷宫的尝试法 2,尝试法的本质(选读) 3,尝试法的优劣 4,岔路标记法 二,带圈迷宫 三,普通迷宫的另类搜索算法(选读) 最近给8岁的娃买了本复杂迷宫的图书,发现通过微信 ...

  6. Python——迷宫生成和迷宫破解算法

    迷宫绘制函数 def draw(num_rows, num_cols, m):image = np.zeros((num_rows * 10, num_cols * 10), dtype=np.uin ...

  7. 使用深度优先搜索算法解决迷宫问题

    英文 | https://bytefish.medium.com/use-depth-first-search-algorithm-to-solve-a-maze-ae47758d48e7 翻译 | ...

  8. 用Qt写一个迷宫游戏

    用Qt写一个迷宫游戏 一段时间以前,我用c写了个使用随机数生成迷宫的代码,现在在自学学Qt,于是就想到了利用这个代码改一个小游戏. 现在记录一下自己的学习过程,也算抛砖引玉,各位看官请多指教. 话不多 ...

  9. poj迷宫游戏c语言代码,ACM/ICPC 之 BFS-简单障碍迷宫问题(POJ2935)

    题目确实简单,思路很容易出来,难点在于障碍的记录,是BFS迷宫问题中很经典的题目了. POJ2935-Basic Wall Maze 题意:6*6棋盘,有三堵墙,求从给定初始点到给定终点的最短路,输出 ...

最新文章

  1. 在ASP.NET中自动给URL地址加上超链接
  2. APPium连接真机输入框中输入的内容与代码中不一致
  3. 黑科技:CSS定制多行省略
  4. 一步一步解决 kernel 2.6 usb host driver
  5. server如何调用 thrift_一文带你了解 Thrift,一个可伸缩的跨语言 RPC 框架(pinpoint 源码分析系列)...
  6. Linux的Nginx五:进程|过程
  7. Let‘s Fluent:更顺滑的MyBatis
  8. 2015-12-01 视图
  9. 学JAVA的为什么_为什么学习Java的人越来越多
  10. Android Studio3.0,在原有项目中进行ndk配置
  11. 禁用“微软 Windows 10 易升”
  12. Pygame教程系列一:快速入门篇
  13. deepin系统维护(系统扩容)deepin live
  14. 隐马尔科夫模型(HMM)等文章记录
  15. 汇编——32位汇编基础框架
  16. CTP: SimNow , 策略模拟交易利器,赞!
  17. Oracle EBS R12开发工具安装
  18. Facebook的Libra “区块链”到底是如何运作的?
  19. 股市学习稳扎稳打(六)股票上龙虎榜有哪些条件
  20. [Axis2]org.apache.axiom.om.NodeUnavailableException

热门文章

  1. 【蓝蜗牛】骨龄检测(一)
  2. 使用Hyper-V集群和存储功能以达到HA
  3. 庚子年 癸未月 癸亥日
  4. 为你揭秘,希格斯玻色子如何赋予粒子质量
  5. 电视调试html页面有左边白边,网页顶部有白边
  6. python中的list和array的不同之处
  7. matlab趋势分析法,趋势分析法案例.pdf
  8. 隼鸟2号着陆“龙宫”并采集样品
  9. 初学python心得1000字实训_数学教学1000字六年级心得大全
  10. Lunatic Python的一些安装问题