zoukankan      html  css  js  c++  java
  • 深度优先搜索算法在RPG游戏迷宫中的应用

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

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

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

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

       举一个例子。

    image

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

    {右}

    {下}

    {右}

    {右,下}选则右

    {上}

    {右}回退一个

    {上}回退一个

    {右,下}选择下

    {右}

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

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

            右

            |

            下

            |

            右

           /  \

          右   下

          |    |

          上   右

          |    |

          右   下

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

  • 相关阅读:
    实现货币金额中文大写转换的程序
    大数阶乘的计算(三)
    全国15亿人口中选1000个代表有多少种选法?
    DB Query Analyzer 中断SQL语句的执行
    Android_Preference存取数据
    Centos 学习笔记软件包管理
    Centos学习笔记文件搜索命令
    《计算机时代》2011年第12期刊登出《DB Query Analyzer中断SQL语句的执行》
    Centos学习笔记linux用户管理
    Centos学习笔记 linux 常用命令:压缩解压命令
  • 原文地址:https://www.cnblogs.com/sdqxcxh/p/1798995.html
Copyright © 2011-2022 走看看