首页 > 深度优先搜索算法在RPG游戏迷宫中的应用

深度优先搜索算法在RPG游戏迷宫中的应用

在RPG游戏中我们经常会看到一些迷宫,我之前玩仙剑一的时候就经常在几个迷宫里绕来绕去也绕不出来,玩仙三由于游戏视角可以转,更是费劲。这里我们使用深度优先算法达到遍历一个迷宫的目的。

   首先定义一个有序元组A:{左,上,右,下}表示遍历的顺序,这个顺序将用来生成搜索树的子节点,当然顺序是可以变的,如果地图是45度角的,也可以定义非正方向,总之能表示一个顺序就好。

   然后针对每个分叉节点,定义候选方向为B:{x|x∈A ∩x方向有路可走∩ x≠当前方向},算法每次得到按照A排序的B集合,然后从B中取第一个方向进行,一直到B=Φ。当B=Φ时回溯到上一个节点,然后得到当前节点的B集,从中选择优先级低于当前方向的方向继续前进.如此可以遍历整个迷宫。

   本算法的问题在于迷宫必须是非成环的,像仙剑三到大渡口的迷宫就是有环的,所形成的就不是搜索树而是搜索图,另一个问题是如果完全执行算法最后会停在入口的位置,所以见到出口您就出吧,见好就收。

   举一个例子。

image

   如上图所示的迷宫A集合{左,上,右,下},B集合依次如下所示:

{右}

{下}

{右}

{右,下}选则右

{上}

{右}回退一个

{上}回退一个

{右,下}选择下

{右}

{下}见好就收吧,出迷宫去喽

   搜索树如图所示,每个子节点集合就是B

        右

        |

        下

        |

        右

       / 

      右   下

      |    |

      上   右

      |    |

      右   下

   当然实际的迷宫构成的搜索树会很复杂,但是深度优先的思路还是一致的.

转载于:https://www.cnblogs.com/sdqxcxh/archive/2010/08/13/1798995.html

更多相关:

  • 原文出处: 韩昊    1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。   转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章...

  • 原文出处: 韩昊   我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维...

  • 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。 想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并...

  • NarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz,一个PRB,12个子载波。...

  •  [h1]反斜杠只能够阻止一个字符  [h2]位于键盘的左上角,和~公用一个键。...