#pragma once #include #include #include #include #include #include #include #include "MazeGenerator.h" #include "PathGenerator.h" class AStar : public PathGenerator { public: static constexpr uint32_t Maze_Char_Space = PathGenerator::Maze_Char_Space; // " " static constexpr uint32_t Maze_Char_Wall = PathGenerator::Maze_Char_Wall; // X static constexpr uint32_t Maze_Char_Path = PathGenerator::Maze_Char_Path; // o static constexpr uint32_t Maze_Char_Exit = PathGenerator::Maze_Char_Exit; // E static constexpr uint32_t Maze_Char_Start = PathGenerator::Maze_Char_Start; // S #define ROW 13 #define COL 31 typedef std::pair Pair; typedef std::pair> pPair; struct solution { int parent_i, parent_j; double f, g, h; }; bool isValid(int row, int col); bool isUnBlocked(char** grid, int row, int col); bool isDestination(int row, int col, Pair dest); double calculateHValue(int row, int col, Pair dest); void tracePath(solution solutionDetails[][COL], Pair dest, int* &aStarTrace, int &aStarTraceCount); void aStarSearch(char** grid, Pair src, Pair dest, int* &aStarTrace, int &aStarTraceCount); };