使用这个算法我可以实现英雄联盟里英雄的走位|Java 开发实战

使用这个算法我可以实现英雄联盟里英雄的走位|Java 开发实战

首页休闲益智LOL AR游戏更新时间:2024-05-09

A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。

基本概念三基值

F=G H : 表示一个节点的总消费值;换句话说就是离起始节点和目标节点距离的总和 G : 表示该从其实节点到该节点的消费值; H : 表示从该节点到目标节点的消费值;(这里注意一下,这里的消费值其实是一个预估值,因为我们无法判断到目标节点的具体路径,这个H值得获取本文会提供三种方法,其中使用最广泛的是曼哈顿距离)

图1

三基值计算常规约定

图2

G值计算H值计算方式

- 首先G是针对其实点的,而H值是针对目标节点的 - 其次G值是真实值,而H值是预估值 - 最后G值得计算是允许斜线行走的,但是H值计算只能横向和纵向的结合

图4

集合列表寻路解析

本小节图片来源以下文章。其中思想参考源以下文章

blog.csdn.net/zgwangbo/ar… blog.csdn.net/hitwhylz/ar…

初始地图

递归寻走图示流程

图6

图7

(2,2),(3,2),(2,4),(3,4)这四个点。但是这四个点恰巧有全部在openList中。依照上面的流程我们得以此比较这四个点和openList集合中对应的点的G值谁大谁小。就一个原则谁小留谁。由图8我们可以知道,新获得的这四个点的G值均大于openlist里对应的点的G值,所以我们这里放弃这四个点。他们没有被我们喜欢,我们抛弃这些点。这一轮结束我们将(3,3)加入到closedList集合中。如果新节点G值小于对应的openList中的点的G值得话,我们就要更新openList集合中的对应的那个点。所谓的更新就是将新节点替换原来那个节点。注意此时新节点和openList对应的那个点出了三基数不同,还有父节点也不同了。

图8

图9

不足之处源码

源码地址:https://gitee.com/zxhGroup/Algorithm

[//]: A译文: blog.csdn.net/coutamg/art… *[//]:其他最小路径算法:www.cnblogs.com/biyeymyhjob… *[//]:启发式算法:baike.baidu.com/item/??…

作者:zxhtom
链接:https://juejin.cn/post/6971217122210889759

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved