算法学习记录——简单的 A*寻路实现——>四个方向(JAVA实现)

A*寻路算法——一种寻找从起点A到终点B的有效路径的算法,游戏设计中的角色移动经常会采用这种算法来实现。

说明:由于是初学者,对算法的理解还不够透彻,下面的分析过程,只考虑最简单的情况——平面四个方向(上,下,左,右)的搜索。

下图中的  S  代表起点(start),  E  代表终点(E),中间有填充色的区域为  障碍  ——不可穿过,需绕行。

                                                                         


1、[ 开始分析算法前,先了解几个算法中要用到的量 ]  

  • 1、下图中每一个  方格  定义为一个节点,每个节点包含以下几个属性
    • 横向的  x   坐标(左上角方格为 0,横向移动x不变,纵向移动x进行加减 1)
    • 纵向的  y   坐标(左上角方格为 0,纵向移动y不变,横向移动y进行加减 1)
    • F的值--->  F=G+H  ,这个F的值,用来判断接下来要选择哪个方格来走的作用。
    • G的值--->当前点距离起点的步数,也就是当前点从起点出发已经走了的步数。
      • G的计算规则:由 方格(节点)A  移动到  方格(节点)B  ===>  G=G+1 

    • H的值--->当前点距离终点的步数,也就是当前点到终点的话,接下来可能会走的步数。
      • H的计算规则:由 方格(节点)A  移动到  方格(节点)B  ===>  H=H+1 

    • parent--->用来存储当前节点的父亲节点,作用是为后续的寻路结果做标记。
  • 2、利用两个链表来分别存储  [ 已经走过的方格(节点) ]  和  [ 将要选择经过的方格(节点) ]  
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值