前言:

我的迷宫代码的实现受到 [liuyubobobo] 的影响。

liuyubobobo 迷宫的实现:

GUI 部分使用 java Swing,编程语言是 Java。

**我的迷宫代码实现: **

GUI 部分使用 Cocos Creator 游戏引擎, 编程语言是 TypeScript。

Github 源码地址 :

运行动画:

非递归实现的随机地图生成过程演示:

非递归实现的随机地图生成寻路过程演示:

开发环境:

操作系统: Macos

游戏引擎: Cocos Creator 2.3.4

编程语言: TypeScript

迷宫定义:

实现的迷宫是什么样子呢?

迷宫的定义如下:

只有一个入口, 只有一个出口

只有一个解

路径是连续的

绘制在一个方形的画布上: 不是其它图形, 圆形等

墙和路径都占一个单元格

约定入口和出口: 入口在第2行第1列, 出口在最后一列的倒数第2行。

算法与数据结构:

迷宫的生成和寻路使用的算法:

[BFS] :广度优先遍历

[DFS] :深度优先遍历

涉及的数据结构的实现:

在 Script/algorithm 文件夹下:

List : 线性表, 队列和栈的一个接口定义

Queue : 队列, 广度优先遍历非递归实现需要用到

Stack : 栈, 深度优先遍历非递归实现需要用

RandomQueue : 随机队列, 使生成的地图更加随机, 不过仍然有点像 BFS

RandomQueue2 : 随机队列,RandomQueue 的改进版, 地图更加随机了

代码的演示:

代码的演示包含两个部分:

1. 地图已经生成的情况下, 从入口开始寻路找到出口;

2. 如何生成地图, 在有迷雾的情况下动态演示地图生成过程。

共有 10 个演示, 可以在编辑器中通过 visualType 属性进行选择:

支持地图规模修改以及地图格子大小的修改:

java迷宫队列实现_Creator 迷宫生成: DFS 与 BFS 算法实现相关推荐

  1. [算法] 二叉树的DFS与BFS算法 (Java) -- 痛定思痛 彻底搞懂

    二叉树的DFS与BFS算法 (Java) 1.概念 ①DFS (深度优先搜索) 维基百科读一遍 定义看完, 看一遍gif ②BFS (广度优先搜索) 维基百科读一遍 gif看一遍 2. 算法实现 二叉 ...

  2. DFS和BFS算法介绍

    我根据看别人的帖子总结的.这篇文章合适对深度优先遍历和广度优先遍历原理有一定了解的同志阅读,深度和广度这两个概念大家都知道的:图通过邻接表存储,深度就是有多少层,广度就是有多宽,两者原理上的区别是DF ...

  3. java迷宫队列实现_迷宫问题--队列实现

    利用队列求解迷宫最短路径问题. 输入: 3 //代表迷宫行数 4 //代表迷宫列数 0 1 1 0 1 0 0 1 1 0 1 0 //代表迷宫 输出: 迷宫路径(用坐标点表示) 3 4 2 3 2 ...

  4. [数据结构]邻接矩阵和邻接表存储的图DFS,BFS算法时间复杂度分析

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

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

  6. 迷宫问题的DFS和BFS解法

    迷宫问题的DFS和BFS解法 ​ 写在前面:通过迷宫问题来熟悉dfs和bfs解法,加深对于这两种搜索方式的理解与运用 DFS算法 注:DFS可以求第一条路径,也可以求最短路径 算法过程 dfs(顶点V ...

  7. 迷宫生成与路径规划算法-Python3.8-附Github代码

    MazeProblem 简单介绍一下 该项目不过是一个平平无奇的小作业,基于python3.8开发,目前提供两种迷宫生成算法与三种迷宫求解算法,希望对大家的学习有所帮助. 项目如果有后续的跟进将会声明 ...

  8. [Leedcode][JAVA][第22题括号生成][DFS][BFS][动态规划]

    [问题描述]22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例:输入:n = 3 输出:["((()))",&q ...

  9. 蛮力法 —— 求解迷宫问题 —— DFS和BFS

    求解迷宫问题 问题描述: 有如图8×8的迷宫 OXXXXXXX OOOOOXXX XOXXOOOX XOXXOXXO XOXXXXXX XOOOOXOO XXXXXXXO 其中,O表示通路方块,X表示 ...

最新文章

  1. 赠书:“替代Linux”?!全球技术海啸来临!
  2. servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
  3. 如何使用 Mmcv.exe 工具来管理群集消息队列资源[转]
  4. 学习记录(一)之h5_canvas
  5. 20165310_获奖感想与Java阶段性学习总结
  6. 跟我学 Java 8 新特性之 Stream 流(六)收集
  7. 没有Wi-Fi?三种方法通过iPhone让Macbook连上网络
  8. 禁止微信调整页面字体大小
  9. mysql数据库文件怎么用_mysql数据库文件怎么用
  10. 【数据库】教你看懂SQLServer查询语句执行计划
  11. GD32F103学习笔记(1)——搭建环境、编译烧写
  12. 三维点云——数据标注
  13. linux c 端口复用,Linux C++ 网络编程学习系列(1)——端口复用实现
  14. 使用HBuilder打包App教程
  15. html公用页脚使用代码,页脚在HTML
  16. 如何选择数字档案系统
  17. php中不等于号怎么表示,excel公式不等于号怎么输入!Excel 请问“不等于”怎么表示...
  18. python合并pdf_实用 | 手把手教你用Python分割与合并PDF
  19. [KALI] 新装KALI自动化配置
  20. 爬取微信朋友圈信息-可视化

热门文章

  1. 使用Word宏替换Header、Footer等中的文本
  2. Oracle的if else if
  3. js 小数取整的函数
  4. ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
  5. java url json字符串_JAVA中带有JSON字符串的HTTP POST请求
  6. IDEA的maven项目报错BeanCreationException: Error creating bean with name “xxxController”
  7. Maven警告:“java使用了未经检查或不安全的操作。java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。“
  8. mysql数据库-1.文件导入mysql表secure_file_priv报错问题解决 mysql select outfile不能导出亲测
  9. 想拿下互联网大厂OFFER,都需要准备什么?
  10. Redis与RabbitMQ作为消息队列的比较