/** * * @param Coordinates $coordinates */ private function mazeRecursion($coordinates) { $directions = $coordinates->getDirections(); shuffle($directions); foreach ($directions as $direction) { $one_step = $coordinates->add($direction); $two_step = $one_step->add($direction); if (!$this->region->contains($two_step)) { continue; } if ($this->grid->getTile($two_step) != $this->tile) { $this->grid->setTile($one_step, clone $this->tile); $this->grid->setTile($two_step, clone $this->tile); $this->mazeRecursion($two_step); } } }
public function getHeuristicValue(Coordinates $currentPosition, Coordinates $goalPosition) { return $currentPosition->getUniqueIndex() === $goalPosition->getUniqueIndex() ? 0 : 1; }
public function getHeuristicValue(Coordinates $currentPosition, Coordinates $goalPosition) { return $currentPosition->subtract($goalPosition)->length(); }