深度优先,Kruskal,Prim几种方式生成迷宫地图
小时候玩过一款3D版迷宫,那时还是功能机时代,黑白界面拼凑的伪3D效果还是给我带来了很多快乐。后来出现了智能机,却再也没找到过那样纯粹的迷宫游戏。总算自己找时间做一个出来。
本文主要介绍一下深度优先,Kruskal,Prim几种方式生成迷宫地图的算法,还有一种递归算法,生成的迷宫多长直路,不太适合纯粹的迷宫,所有暂时没有去实现。源码地址:https://github.com/LogicMonst/mazepath
深度优先算法:
思路:从起点出发,随机选择周围没有被遍历过的点,如果周围都被遍历过,则回溯到上一个遍历点,随机选择周围没有被遍历过的点,如此往复,直到遍历所有点。
Kruskal算法:
思路:来源于最小生成树的Kruskal算法。 算法导论里说的很清楚了:
Prim算法:
思路:同样的,引用算法导论的内容:
几种方式比较:
深度优先的方式,虽然有可能路径弯弯曲曲,路径比较长,但是存在着一条明显的主路,分岔路基本不深,对于走迷宫来说,难度不算很大:
上图表示了从坐下出发,到达右上的路径,基本上主路的分岔路都不是很深。
Kruskal和Prim的方式,虽然路径不算很长,但是路径存在着比较多的分岔路,且分岔有时还挺深,走进去发现不通,再回头找到上次分岔的地方,对于走迷宫来说,还是比较有难度的:
这里介绍了生成迷宫的几种方式, 源码https://github.com/LogicMonst/mazepath 可以导出成dll,配合unity,就可以实现开头GIF展示的那种迷宫游戏了。
深度优先,Kruskal,Prim几种方式生成迷宫地图相关推荐
- Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码
Py之qrcode:调用python的qrcode库两种方式生成二维码.带logo的二维码 目录 python编程实现生成二维码 1.第一种方式-纯文本 2.第二种方式-带logo
- rsa1024 公钥c语言程序,两种方式生成RSA 公钥私钥
两种方式-生成RSA256私钥公钥 两种方式生成私钥公钥 1.ssh-keygen 方式 生成加密长度4096位密钥 生成私钥:ssh-keygen -t rsa -b 4096 -f ${priva ...
- 三种方式生成小程序二维码
通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面,所有生成的二维码永久有效,可放心使用.目前微信支持两种二维码,小程序码(左),小程序二维码(右),如下所示: 为满 ...
- 使用Math 类 和 Random类 两种方式生成 20 到30之间的随机整数---java基础
package com.henu;import java.util.Random;public class Test05 {public static void main(String[] args) ...
- excel找到对应数据的列指标_三种方式制作数据地图
数据地图,因为地理信息的加持,信息丰富,直观明显,广泛地应用于多个行业,数据分析必备利器. 方式一:通过Excel制作数据地图 本文大篇幅在介绍这种方式的具体操作方法,共分为四个步骤.概括来说其主要通 ...
- java生成迷宫_java怎么生成迷宫地图
package cn.zhongZw.model; import java.util.ArrayList; import java.util.Random; public class MazeMode ...
- iOS打包生成ipa的几种方式
写在前面,内容大致转载自 http://www.cnblogs.com/wengzilin/p/4601684.html 感谢大神分享.其中使用iTunes的方式已经无法使用. 推荐使用最后一种方式生 ...
- c语言随机prim算法的迷宫生成,Prim算法生成迷宫
初始化地图 function initMaze(r,c){ let row = new Array(2 * r + 1) for(let i = 0; i < row.length; i++){ ...
- C 语言 随机prim算法 生成迷宫
使用 随机prim算法生成迷宫,效果如下: 随机prim迷宫生成算法思想: 1.普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不 ...
- 实验三、prim算法生成迷宫,A*算法解迷宫(实验准备)
目录 实验要求: 算法简介: prim算法: A*算法: 实验要求: 该项目的主要要求是:首先生成一个迷宫,要求随机生成.而生成迷宫有深度优先算法.prim算法.递归分割算法等.老师说建议使用prim ...
最新文章
- 使用Blender中的几何节点创建程序对象
- DFS:深入优先搜索 POJ-2386 Lake Counting
- 【XAudio2】3.关键概念
- java之IO流(一)
- 如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)?
- if 判断成绩 ,整百制
- 又发现一个visual studio 2015的坑啊。
- 用 Git 操作的数据库?这个项目火了!
- 静态类 c# 1614532739
- [U3D Demo] 手机FPS射击游戏
- VS Code 调试ROS节点
- 团队文化中的害群之马
- 再论:男人有多大责任和感恩代表着有多大的驾驭能力和事业能力
- opencv判断读取图片是否为空
- Maven安装与配置,Idea配置Maven
- 关于so文件你需要知道的知识
- 高效数字音频功率放大器NTP8928
- python猴子分桃_猴子分桃 - Ryan in C++ - 博客园
- 2020-04-17
- 6月29日科技资讯|首款搭载国产CPU的域名服务器发布;iPhone彻底淘汰Lightning接口?ChromeOS 75发布
热门文章
- 万娟 白话大数据和机械学习_白话大数据与机器学习 (高扬著) 带书签目录 完整pdf扫描版[71MB]...
- 微信服务号只有域名没有80端口怎么办
- HTTP Live Streaming直播(iOS直播)技术分析与实现
- PBOOT网站后太登录显示验证码错误的解决经验分享
- BTA分论坛现场直击 | 区块链行业应用有待落地,游戏上链冰火两重天
- java相对路径的写法格式_java相对路径的写法
- 未来真的可以影响过去吗?人人都能看懂的波粒二象性和延迟选择量子擦除实验解释,通俗易懂量子物理
- NXP S32K146 CAN通讯 TJA1043(一)
- 【算法】1436. 旅行终点站(多语言实现)
- Linux进程调度策略