| Line | Branch | Exec | Source | 
|---|---|---|---|
| 1 | /* | ||
| 2 | ** EPITECH PROJECT, 2024 | ||
| 3 | ** zappy/ai | ||
| 4 | ** File description: | ||
| 5 | ** Survive.cpp | ||
| 6 | */ | ||
| 7 | |||
| 8 | #include "../../../bots/ABotPattern.hpp" | ||
| 9 | #include "../../../constant/Constants.hpp" | ||
| 10 | #include <functional> | ||
| 11 | |||
| 12 | // TODO: verify to have no ko | ||
| 13 | ✗ | void ABotPattern::searchAndTakeRessource(const std::string &ressource) | |
| 14 | { | ||
| 15 | |||
| 16 | ✗ | if (_state.metadata["should_update_env"] == "true") | |
| 17 | { | ||
| 18 | ✗ | queue.push_back({[&]() | |
| 19 | ✗ | { doAction(LOOK, ""); }, "LOOK"}); | |
| 20 | ✗ | return; | |
| 21 | } | ||
| 22 | else | ||
| 23 | { | ||
| 24 | // TODO: find a way to add it to constant, this code is copy paste in RunToLinemate.cpp | ||
| 25 | ✗ | std::unordered_map<std::string, std::function<void()>> actions = { | |
| 26 | ✗ | {"FORWARD", [&]() | |
| 27 | ✗ | { doAction(FORWARD, ""); }}, | |
| 28 | ✗ | {"LEFT", [&]() | |
| 29 | ✗ | { doAction(LEFT, ""); }}, | |
| 30 | ✗ | {"RIGHT", [&]() | |
| 31 | ✗ | { doAction(RIGHT, ""); }}, | |
| 32 | ✗ | {"TAKE", [=]() | |
| 33 | ✗ | { doAction(TAKE, ressource); }}}; | |
| 34 | |||
| 35 | ✗ | std::unique_ptr<Tile> tile = _state.environment.getTileByRessource(ressource); | |
| 36 | ✗ | if (tile != nullptr) | |
| 37 | { | ||
| 38 | std::pair<int, int> coord = {tile->x, tile->y}; | ||
| 39 | // std::cout << "tile = " << tile->x << " " << tile->y << std::endl; | ||
| 40 | ✗ | if (movementMap.find(coord) != movementMap.end()) | |
| 41 | { | ||
| 42 | ✗ | for (const auto &move : movementMap[coord]) | |
| 43 | { | ||
| 44 | ✗ | queue.push_back({actions[move], move}); | |
| 45 | // std::cout << "movement to go the tile = " << move << std::endl; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | ✗ | queue.push_back({actions["TAKE"], "TAKE"}); | |
| 49 | } | ||
| 50 | |||
| 51 | ✗ | if (tile == nullptr) | |
| 52 | { | ||
| 53 | ✗ | queue.push_back({[&]() | |
| 54 | ✗ | { doAction(FORWARD, ""); }, "FORWARD"}); | |
| 55 | } | ||
| 56 | ✗ | } | |
| 57 | ✗ | } | |
| 58 |