diff --git a/lib/PacManAI.cpp b/lib/PacManAI.cpp index 4688b15..9168ab7 100644 --- a/lib/PacManAI.cpp +++ b/lib/PacManAI.cpp @@ -16,10 +16,13 @@ Direction PacManAI::suggestedDirection() const { // This function is not yet implemented. // You will implement it as part of module 25. -GridPosition PacManAI::pelletClosestToPacman(GridPosition, - std::vector &) { - - return {0, 0}; +GridPosition PacManAI::pelletClosestToPacman(GridPosition position, + std::vector & pellets) { + if (pellets.empty()) + return { 0, 0 }; + return *std::min_element(pellets.begin(), pellets.end(), [position](GridPosition a, GridPosition b) { + return positionDistance(a, position) < positionDistance(b, position); + }); } // This function is not yet implemented. diff --git a/test/testPacmanAI.cpp b/test/testPacmanAI.cpp index 4d429fb..4e9e609 100644 --- a/test/testPacmanAI.cpp +++ b/test/testPacmanAI.cpp @@ -7,6 +7,7 @@ TEST_CASE("Find pellet closest to PacMan", "[AI]") { PacManAI AI; using TestData = std::tuple, GridPosition>; auto data = GENERATE( + TestData{{5, 5}, {}, {0, 0}}, TestData{{5, 5}, {{5, 6}}, {5, 6}}, TestData{{5, 5}, {{5, 5}}, {5, 5}}, TestData{{5, 5}, {{0, 0}, {5, 6}}, {5, 6}},