小时候玩过一款3D版迷宫,那时还是功能机时代,黑白界面拼凑的伪3D效果还是给我带来了很多快乐。后来出现了智能机,却再也没找到过那样纯粹的迷宫游戏。总算自己找时间做一个出来。

本文主要介绍一下深度优先,Kruskal,Prim几种方式生成迷宫地图的算法,还有一种递归算法,生成的迷宫多长直路,不太适合纯粹的迷宫,所有暂时没有去实现。源码地址:https://github.com/LogicMonst/mazepath

深度优先算法:

思路:从起点出发,随机选择周围没有被遍历过的点,如果周围都被遍历过,则回溯到上一个遍历点,随机选择周围没有被遍历过的点,如此往复,直到遍历所有点。

Kruskal算法:

思路:来源于最小生成树的Kruskal算法。 算法导论里说的很清楚了:

Prim算法:

思路:同样的,引用算法导论的内容:

几种方式比较:

深度优先的方式,虽然有可能路径弯弯曲曲,路径比较长,但是存在着一条明显的主路,分岔路基本不深,对于走迷宫来说,难度不算很大:

上图表示了从坐下出发,到达右上的路径,基本上主路的分岔路都不是很深。

Kruskal和Prim的方式,虽然路径不算很长,但是路径存在着比较多的分岔路,且分岔有时还挺深,走进去发现不通,再回头找到上次分岔的地方,对于走迷宫来说,还是比较有难度的:

这里介绍了生成迷宫的几种方式, 源码https://github.com/LogicMonst/mazepath 可以导出成dll,配合unity,就可以实现开头GIF展示的那种迷宫游戏了。

深度优先,Kruskal,Prim几种方式生成迷宫地图相关推荐

  1. Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码

    Py之qrcode:调用python的qrcode库两种方式生成二维码.带logo的二维码 目录 python编程实现生成二维码 1.第一种方式-纯文本 2.第二种方式-带logo

  2. rsa1024 公钥c语言程序,两种方式生成RSA 公钥私钥

    两种方式-生成RSA256私钥公钥 两种方式生成私钥公钥 1.ssh-keygen 方式 生成加密长度4096位密钥 生成私钥:ssh-keygen -t rsa -b 4096 -f ${priva ...

  3. 三种方式生成小程序二维码

    通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面,所有生成的二维码永久有效,可放心使用.目前微信支持两种二维码,小程序码(左),小程序二维码(右),如下所示: 为满 ...

  4. 使用Math 类 和 Random类 两种方式生成 20 到30之间的随机整数---java基础

    package com.henu;import java.util.Random;public class Test05 {public static void main(String[] args) ...

  5. excel找到对应数据的列指标_三种方式制作数据地图

    数据地图,因为地理信息的加持,信息丰富,直观明显,广泛地应用于多个行业,数据分析必备利器. 方式一:通过Excel制作数据地图 本文大篇幅在介绍这种方式的具体操作方法,共分为四个步骤.概括来说其主要通 ...

  6. java生成迷宫_java怎么生成迷宫地图

    package cn.zhongZw.model; import java.util.ArrayList; import java.util.Random; public class MazeMode ...

  7. iOS打包生成ipa的几种方式

    写在前面,内容大致转载自 http://www.cnblogs.com/wengzilin/p/4601684.html 感谢大神分享.其中使用iTunes的方式已经无法使用. 推荐使用最后一种方式生 ...

  8. c语言随机prim算法的迷宫生成,Prim算法生成迷宫

    初始化地图 function initMaze(r,c){ let row = new Array(2 * r + 1) for(let i = 0; i < row.length; i++){ ...

  9. C 语言 随机prim算法 生成迷宫

    使用 随机prim算法生成迷宫,效果如下: 随机prim迷宫生成算法思想: 1.普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不 ...

  10. 实验三、prim算法生成迷宫,A*算法解迷宫(实验准备)

    目录 实验要求: 算法简介: prim算法: A*算法: 实验要求: 该项目的主要要求是:首先生成一个迷宫,要求随机生成.而生成迷宫有深度优先算法.prim算法.递归分割算法等.老师说建议使用prim ...

最新文章

  1. 使用Blender中的几何节点创建程序对象
  2. DFS:深入优先搜索 POJ-2386 Lake Counting
  3. 【XAudio2】3.关键概念
  4. java之IO流(一)
  5. 如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)?
  6. if 判断成绩 ,整百制
  7. 又发现一个visual studio 2015的坑啊。
  8. 用 Git 操作的数据库?这个项目火了!
  9. 静态类 c# 1614532739
  10. [U3D Demo] 手机FPS射击游戏
  11. VS Code 调试ROS节点
  12. 团队文化中的害群之马
  13. 再论:男人有多大责任和感恩代表着有多大的驾驭能力和事业能力
  14. opencv判断读取图片是否为空
  15. Maven安装与配置,Idea配置Maven
  16. 关于so文件你需要知道的知识
  17. 高效数字音频功率放大器NTP8928
  18. python猴子分桃_猴子分桃 - Ryan in C++ - 博客园
  19. 2020-04-17
  20. 6月29日科技资讯|首款搭载国产CPU的域名服务器发布;iPhone彻底淘汰Lightning接口?ChromeOS 75发布

热门文章

  1. 万娟 白话大数据和机械学习_白话大数据与机器学习 (高扬著) 带书签目录 完整pdf扫描版[71MB]...
  2. 微信服务号只有域名没有80端口怎么办
  3. HTTP Live Streaming直播(iOS直播)技术分析与实现
  4. PBOOT网站后太登录显示验证码错误的解决经验分享
  5. BTA分论坛现场直击 | 区块链行业应用有待落地,游戏上链冰火两重天
  6. java相对路径的写法格式_java相对路径的写法
  7. 未来真的可以影响过去吗?人人都能看懂的波粒二象性和延迟选择量子擦除实验解释,通俗易懂量子物理
  8. NXP S32K146 CAN通讯 TJA1043(一)
  9. 【算法】1436. 旅行终点站(多语言实现)
  10. Linux进程调度策略