关于小游戏魔塔的优化算法(2)---用A*改造寻路算法

魔塔添加新的功能!

上一节我们做到了寻找可行走路径,但是不够
因为魔塔中充斥着各色各样的怪物,门。我们可行走的路径实在太少了!

现在我们作为一名玩家,想通关游戏,我们大概每层要做两件事情

  1. 用损血最少的方式找到所有宝物
  2. 用损血最少的方式到达下一层

第一件事情可能要用到我们的强化学习去弄了
所以这里我们关注的是第二件事情

我们想到下一层,再细化一下程序需要做什么?

  1. 找到下一层的路径
  2. 判断每条路径的损失(消耗血量、钥匙、陷阱等)

这里回到我们上一节的算法,做到第一步很简单,做到第二步需要添加比对条件,一旦地形复杂了速度就很慢!
所以我们需要一个新的算法来实现这个功能。

这里我们采用A算法来实现它(A也是除3D游戏外的主流寻路算法之一)

A*算法介绍

这里参考了A*介绍

这里就简单的概括一下,有兴趣的朋友可以参考上面的网站学习。

上一节我们介绍过Dijkstra算法,主要就是维护两个表open list和close list.然后通过松弛open list一步一步向外扩散标记每个点的最短路径。

A*算法就是在此之上进行改造,在标记最短路径的时候从(a>b)这种比较方式变成了(价值(a)> 价值(b))。

再简单一点说就是
这个价值:F = G + H
G可以简单理解成是之前的路径数,走到这里耗费的成本(步数或者加上血量损失之类的)
这个H就是预估成本,就是估算到终点的成本,这个预估成本纯度很高,通过调整H可以提高算法的效率。高效率才能让算法及时反应在操作上,谁也不想点一下、卡一下对吧?

A*算法实现

施工中

H实现

施工中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值