2017 © Pedro Peláez
 

library astar

AStar path finding implementation in php

image

blackscorp/astar

AStar path finding implementation in php

  • Friday, October 6, 2017
  • by BlackScorp
  • Repository
  • 3 Watchers
  • 31 Stars
  • 122 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 8 Forks
  • 1 Open issues
  • 7 Versions
  • 11 % Grown

The README.md

A-Star

Scrutinizer Code Quality Code Coverage Build Status, (*1)

A-star is a path finding algorithm, written in PHP. It can find the shortest path between two points in a two dimensional array by using different heuristics., (*2)

Installation

composer require blackscorp/astar

Usage

first create a two dimensional array for your map, (*3)

  $map = [
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0],
            [0, 0, 0, 1, 1],
            [0, 0, 0, 1, 0],
        ];

each key represent the x and y position of the map. each value of the array represents the costs, A-star tries to find a way with lowest costs. you can use negative keys if your map requires it., (*4)

next convert the array to a Grid, a Grid is a collection of Nodes., (*5)

$grid = new BlackScorp\Astar\Grid($map);

now you can fetch nodes from the Grid like so, (*6)

$startPosition = $grid->getPoint(3,1);
$endPosition = $grid->getPoint(0,0);

at the end pass the grid to the astar and search for the shortests path, (*7)

$astar = new BlackScorp\Astar\Astar($grid);
$nodes = $astar->search($startPosition,$endPosition);
if(count($nodes) === 0){
   echo "Path not found";
}else{
  foreach($nodes as $node){
     echo $node->getY().'/'.$node->getX().'<br/>';
  }
}

Settings

by default diagonal directions are disabled, they can be enabled like so, (*8)

$astar->enableDiagonal();

as soon as the diagonal option is enabled, the algorithm use the Manhattan heuristic to find the shortest path., (*9)

Manhattan is not precise but the caluclation costs are low, however you can use another heuristics like Diagonal or Euclidean with following code., (*10)

$astar->setHeuristic(new BlackScorp\Astar\Heuristic\Euclidean());

you can also create a custom heuristic., (*11)

Block locations

there are cases where you want to block a specific path completly, independant of the costs, you can do so with following code, (*12)

astar->blocked([3,2]);

this basicly means that in the initial map, (*13)

  $map = [
            [0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0],
            [0, 2, 2, 0, 0],
            [0, 3, 0, 1, 1],
            [0, 0, 0, 1, 0],
        ];

the values 3 and 2 cannot be passed., (*14)

Contribute

Please feel free to make pull requests, there is still place for improvement, the Grid contains a two dimensional array which might be replaced by an SplFixedArray or something similar., (*15)

Run the tests to be sure nothing break., (*16)

License

A-Star is free software distributed under the terms of the MIT license., (*17)

The Versions

06/10 2017

dev-master

9999999-dev

AStar path finding implementation in php

  Sources   Download

MIT

by Vitalij Mik

06/10 2017

v1.2.0

1.2.0.0

AStar path finding implementation in php

  Sources   Download

MIT

by Vitalij Mik

04/01 2017

v1.1.1

1.1.1.0

AStar path finding implementation in php

  Sources   Download

MIT

by Vitalij Mik

04/01 2017

v1.0.1

1.0.1.0

AStar path finding implementation in php

  Sources   Download

MIT

by Vitalij Mik

11/03 2016

v1.0.0

1.0.0.0

AStar path finding implementation in php

  Sources   Download

MIT

by Vitalij Mik

11/03 2015

dev-heap

dev-heap

AStar pathfinding implementation in php

  Sources   Download

MIT

by Vitalij Mik

10/03 2015

dev-develop

dev-develop

AStar pathfinding implementation in php

  Sources   Download

MIT

The Development Requires

by Vitalij Mik