项目作者: liukelin

项目描述 :
php实现的寻路demo a-start
高级语言: PHP
项目地址: git://github.com/liukelin/php-pathfinding.git


一个基于a-start的最小路径demo.

  1. 多年前面试某厂时候出的一道编码题, 主要考察的是代码规范和类接口的运用
  2. 网上找了些资料,因为JS不是太熟练,所有暂时没有改成纯JS版本。
  3. table每个td座位一个坐标,规定起始坐标、终点坐标、和 设置的障碍物坐标。

基本原理

  1. 1、寻路开始,获取当前路径节点的周边所有相邻节点。(8个相邻方位)
  2. 2、将坐标周边记录 -> 开启坐标集合(可通过坐标 $open_arr)
  3. 3、对当前坐标周边所有坐标集合($open_arr 计算:
  4. G = 从起点A,沿着产生的路径,移动到网格上指定方格的移动耗费。
  5. H = 从网格上那个方格移动到终点B的预估移动耗费。
  6. F = G + H
  7. (这个可以粗略理解为:根据 "终点坐标" 相对当前坐标 方位,计算出最符合终点方向 所在的那个周边相邻节点。)
  8. 4、将 F值最小的作为 使用的路径坐标 ->路径坐标集合(path) 、其余周边坐标 ->关闭坐标集合(不可通过坐标 $close_arr
  9. 5、最终到达终点坐标,结束.

目录结构

  1. ├─service/ 处理方法
  2. ├─api.php web接口
  3. ├─Maps.php 绘制地图类
  4. └─Paths.php 寻路生成类
  5. └─index.html 页面

demo地址:

  1. [https://demo.liukelin.top/php-pathfinding](https://demo.liukelin.top/php-pathfinding)<br />