一种三维迷宫随机生成算法制造技术

技术编号:21501118 阅读:67 留言:0更新日期:2019-07-03 04:43
本发明专利技术涉及一种三维迷宫随机生成算法。本发明专利技术涉及的三维迷宫是有着前、后、左、右、上、下共六个方向的走向,真正实现了一个三维空间中的行走。而提出的三维迷宫随机生成算法无论相对于二维迷宫生成算法还是人工设计的方法,在设计上都有了很大的进步。相对于二维迷宫,它具有更高的层次,同时它也包括二维迷宫,如果选择了最低等级的;相对于人工设计的方法,它解决了人工繁琐的步骤,通过计算机的计算达到同样的效果。三维迷宫随机生成算法旨在增加游戏的趣味性,游戏设计者可以直接应用此算法得到迷宫的逻辑模型。因此,有了三维迷宫随机生成算法,游戏设计者就不必纠结迷宫的设计过程。

A Random Generation Algorithms for Three-dimensional Labyrinth

【技术实现步骤摘要】
一种三维迷宫随机生成算法
本专利技术属于解决一类问题的计算机算法
,针对某些涉及到三维迷宫的电子游戏中的生成方案,特别涉及一种三维迷宫随机生成算法。
技术介绍
现在很多网上所说的三维迷宫和二维迷宫,其实本质上都是二维的迷宫,只不过表现形式有二维和三维的不同而已,只有前、后、左、右四个方向的走向,是在一个平面上的行走。
技术实现思路
为解决上诉技术问题,本专利技术提供如下技术方案:一种三维迷宫随机生成算法,其特征在于,包括步骤1、将起点房间作为当前选择的房间;步骤2、访问当前房间,并将当前房间标记为已访问;步骤3、将当前房间插入线性表的表尾后判断是否还存在没有被访问的房间;或直接判断是否还存在没有被访问的房间;步骤4、根据选择进行如下处理;步骤4.1、将当前房间插入线性表的表尾后判断是否还存在没有被访问的房间,如果不存在没有被访问的房间,结束整个流程;如果还存在没有被访问的房间,则:步骤4.1.1、从线性表中随机选择一个房间,并将此房间设置成为当前选择的房间;步骤4.1.1.1、判断当前房间还存在未被访问的相邻的房间,如果当前房间还存在未被访问的相邻的房间:(a)从当前房间中随机选择一个还未被访问过的相邻的房间,并将此房间标记为已访问;(b)拆除当前选择房间和此房间中间的墙;(c)将此房间插入线性表的表尾后,如果此房间还存在没有被访问的相邻的房间就重复步骤4.1;步骤4.1.1.2、判断当前房间还存在未被访问的相邻的房间,如果当前房间不存在未被访问的相邻的房间,则将其从线性表中删除。再判断是否存在未被访问房间,如果不存在未被访问房间则结束整个流程;如果还存在没有被访问的房间则重复步骤4.1.1。步骤4.2、直接判断是否还存在没有被访问的房间,如果不存在未被访问的房间,则结束整个流程;如果还存在没有被访问的房间,则根据当前房间中是否存在未被访问的相邻的房间选择执行:步骤4.2.1、如果当前房间中存在未被访问的相邻的房间:则a.在当前房间的所有未被访问过的相邻的房间中,随机选择一个房间并标记;b.拆除此房间与当前所选择房间之间的墙;c.将当前房间入栈;d.将所选择的房间设置成当前选择的房间后重复步骤4.2;步骤4.2.2、如果当前房间中不存在未被访问的相邻的房间:a.栈顶房间出栈b.将出栈的房间设置成为当前选择的房间后重复步骤4.2。本专利技术涉及的三维迷宫是有着前、后、左、右、上、下共六个方向的走向,真正实现了一个三维空间中的行走。而提出的三维迷宫随机生成算法无论相对于二维迷宫生成算法还是人工设计的方法,在设计上都有了很大的进步。相对于二维迷宫,它具有更高的层次,同时它也包括二维迷宫,如果选择了最低等级的;相对于人工设计的方法,它解决了人工繁琐的步骤,通过计算机的计算达到同样的效果。三维迷宫随机生成算法旨在增加游戏的趣味性,游戏设计者可以直接应用此算法得到迷宫的逻辑模型。因此,有了三维迷宫随机生成算法,游戏设计者就不必纠结迷宫的设计过程。附图说明图1是三维迷宫生成算法Prim算法流程图。图2是三维迷宫生成算法回溯算法流程图。具体实施方式一、首先介绍本专利技术的方法原理。本专利技术主要实现了六个方向的三维迷宫(表现形式可以是二维的,也可以是三维的),相对于二维迷宫随机生成算法,提出了三维迷宫生成算法。本专利技术提供如下技术方案:1.基于回溯算法的三维迷宫随机生成算法;2.基于Prim算法的三维迷宫随机生成算法。下面进行详细介绍。回溯算法:回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。要实现这种方法,需要用到的主要的数据结构是栈和队列。栈的作用是存储已被访问过的房间,队列的作用则是起到一个辅助作用,方便随机选择一个相邻的房间。具体的做法是:(1)将起点房间作为当前选择的房间;(2)访问当前房间,并将当前房间标记为已访问;(3)如果还存在没有被访问的房间,则循环:①如果当前房间中存在未被访问的相邻的房间:a.在当前房间的所有未被访问过的相邻的房间中,随机选择一个房间并标记;b.拆除此房间与当前所选择房间之间的墙;c.将当前房间入栈;d.将所选择的房间设置成当前选择的房间;②否则:a.栈顶房间出栈b.将出栈的房间设置成为当前选择的房间;Prim算法:具体做法是:(1)将起始房间作为当前选择的房间;(2)访问当前房间,并将当前房间标记为已访问;(3)将当前房间插入线性表的表尾;(4)如果还存在没有被访问的房间,则循环:①从线性表中随机选择一个房间;②将此房间设置成为当前选择的房间;a.如果当前房间还存在未被访问的相邻的房间:(a)从当前房间中随机选择一个还未被访问过的相邻的房间,并将此房间标记为已访问;(b)拆除当前选择房间和此房间中间的墙;(c)将此房间插入线性表的表尾;b.否则:将当前房间从线性表中删除;二、下面是采用上述方法的具体案例。首先定义一个迷宫的结构体:typedefCell***maze;//定义一个迷宫类型,其本质为Cell结构类型的一个三维数组的指针然后,给出算法主体中会用到的栈、队列、线性表所用到的一些方法:(1)栈:(2)队列(3)线性表最后,给出两种算法的主体算法:(1)回溯算法:(2)Prim算法:本文中所描述的具体实施例仅仅是对本专利技术精神作举例说明。本专利技术所属
的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本专利技术的精神或者超越所附权利要求书所定义的范围。本文档来自技高网
...

【技术保护点】
1.一种三维迷宫随机生成算法,其特征在于,包括步骤1、将起点房间作为当前选择的房间;步骤2、访问当前房间,并将当前房间标记为已访问;步骤3、将当前房间插入线性表的表尾后判断是否还存在没有被访问的房间;或直接判断是否还存在没有被访问的房间;步骤4、根据选择进行如下处理;步骤4.1、将当前房间插入线性表的表尾后判断是否还存在没有被访问的房间,如果不存在没有被访问的房间,结束整个流程;如果还存在没有被访问的房间,则:步骤4.1.1、从线性表中随机选择一个房间,并将此房间设置成为当前选择的房间;步骤4.1.1.1、判断当前房间还存在未被访问的相邻的房间,如果当前房间还存在未被访问的相邻的房间,则:(a)从当前房间中随机选择一个还未被访问过的相邻的房间,并将此房间标记为已访问;(b)拆除当前选择房间和此房间中间的墙;(c)将此房间插入线性表的表尾后,如果此房间还存在没有被访问的相邻的房间就重复步骤4.1;步骤4.1.1.2、判断当前房间还存在未被访问的相邻的房间,如果当前房间不存在未被访问的相邻的房间,则将其从线性表中删除;再判断是否存在未被访问房间,如果不存在未被访问房间则结束整个流程;如果还存在没有被访问的房间则重复步骤4.1.1;步骤4.2、直接判断是否还存在没有被访问的房间,如果不存在未被访问的房间,则结束整个流程;如果还存在没有被访问的房间,则根据当前房间中是否存在未被访问的相邻的房间选择执行:步骤4.2.1、如果当前房间中存在未被访问的相邻的房间:则a.在当前房间的所有未被访问过的相邻的房间中,随机选择一个房间并标记;b.拆除此房间与当前所选择房间之间的墙;c.将当前房间入栈;d.将所选择的房间设置成当前选择的房间后重复步骤4.2;步骤4.2.2、如果当前房间中不存在未被访问的相邻的房间,则:a.栈顶房间出栈b.将出栈的房间设置成为当前选择的房间后重复步骤4.2。...

【技术特征摘要】
1.一种三维迷宫随机生成算法,其特征在于,包括步骤1、将起点房间作为当前选择的房间;步骤2、访问当前房间,并将当前房间标记为已访问;步骤3、将当前房间插入线性表的表尾后判断是否还存在没有被访问的房间;或直接判断是否还存在没有被访问的房间;步骤4、根据选择进行如下处理;步骤4.1、将当前房间插入线性表的表尾后判断是否还存在没有被访问的房间,如果不存在没有被访问的房间,结束整个流程;如果还存在没有被访问的房间,则:步骤4.1.1、从线性表中随机选择一个房间,并将此房间设置成为当前选择的房间;步骤4.1.1.1、判断当前房间还存在未被访问的相邻的房间,如果当前房间还存在未被访问的相邻的房间,则:(a)从当前房间中随机选择一个还未被访问过的相邻的房间,并将此房间标记为已访问;(b)拆除当前选择房间和此房间中间的墙;(c)将此房间插入线性表的表尾后,如果此房间还存在没有被访问的相邻的房间就重复步...

【专利技术属性】
技术研发人员:吴志红易文驰
申请(专利权)人:黄冈师范学院
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1