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

在RPG游戏中我们经常会看到一些迷宫,我之前玩仙剑一的时候就经常在几个迷宫里绕来绕去也绕不出来,玩仙三由于游戏视角可以转,更是费劲。这里我们使用深度优先算法达到遍历一个迷宫的目的。
   首先定义一个有序元组A:{左,上,右,下}表示遍历的顺序,这个顺序将用来生成搜索树的子节点,当然顺序是可以变的,如果地图是45度角的,也可以定义非正方向,总之能表示一个顺序就好。
   然后针对每个分叉节点,定义候选方向为B:{x|x∈A ∩x方向有路可走∩ x≠当前方向},算法每次得到按照A排序的B集合,然后从B中取第一个方向进行,一直到B=Φ。当B=Φ时回溯到上一个节点,然后得到当前节点的B集,从中选择优先级低于当前方向的方向继续前进.如此可以遍历整个迷宫。
   本算法的问题在于迷宫必须是非成环的,像仙剑三到大渡口的迷宫就是有环的,所形成的就不是搜索树而是搜索图,另一个问题是如果完全执行算法最后会停在入口的位置,所以见到出口您就出吧,见好就收。
   举一个例子。
__________________________
___  |      ________      |
| |  |      |  _____|     |
| |  |______|  |          |
| |_____       |          |
|       |   ___|          |
|       |   |             |
|       |   |______       |
|       |________  |      |
|                | |      |
|________________| |______| 
   如上图所示的迷宫A集合{左,上,右,下},B集合依次如下所示:
{右}
{下}
{右}
{右,下}选则右
{上}
{右}回退一个
{上}回退一个
{右,下}选择下
{右}
{下}见好就收吧,出迷宫去喽
   搜索树如图所示,每个子节点集合就是B
        右
        |
        下
        |
        右
       /  /
      右   下
      |    |
      上   右
      |    |
      右   下
   当然实际的迷宫构成的搜索树会很复杂,但是深度优先的思路还是一致的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值