Coverage report for ai


src/
File: src/bots/ABot.cpp
Date: 2024-06-25 10:57:00
Lines:
0/62
0.0%
Functions:
0/11
0.0%
Branches:
0/138
0.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy/ai
4 ** File description:
5 ** ABot.cpp
6 */
7
8 #include "ABot.hpp"
9
10 ✗ ABot::ABot()
11 {
12 ✗ _state.ressources.food = 9;
13 ✗ }
14
15 ✗ ABot::~ABot()
16 {
17 ✗ }
18
19 ✗ void ABot::sendMessage(const std::string &message)
20 {
21 ✗ std::string messageToSend = message + "\n";
22
23 ✗ send(_sockfd, messageToSend.c_str(), messageToSend.size(), 0);
24 ✗ }
25
26 // TODO: decrypt parameter in a tmp to debug it easily.
27 ✗ void ABot::doAction(Action action, const std::string parameter)
28 {
29 try
30 {
31 ✗ ActionInfo actionInfo = getActionInfo(action);
32 ✗ std::string actionToServer = actionInfo.getName();
33
34 ✗ if (!parameter.empty())
35 ✗ actionToServer += " " + parameter;
36 ✗ debugAction(actionInfo, parameter);
37 ✗ sendMessage(actionToServer);
38
39 ✗ _state.lastAction.action = action;
40 ✗ _state.lastAction.parameter = parameter;
41
42 ✗ saveMetrics(actionInfo);
43 ✗ }
44 ✗ catch (const ActionInfoException &e)
45 {
46 ✗ PRINT_ERROR(e.what());
47 ✗ }
48 // Bots moved or took a ressource, his environment changed
49 ✗ if (action == FORWARD || action == RIGHT || action == LEFT || action == TAKE || action == INCANTATION)
50 ✗ _state.metadata["should_update_env"] = "true";
51 ✗ if (action == LOOK)
52 ✗ _state.metadata["should_update_env"] = "false";
53 ✗ }
54
55 ✗ void ABot::saveMetrics(ActionInfo actionInfo)
56 {
57 ✗ auto it = std::find_if(_state.actionsData.begin(), _state.actionsData.end(),
58 ✗ [&actionInfo](const ActionInfo &ad)
59 ✗ { return ad.getName() == actionInfo.getName(); });
60 ✗ if (it == _state.actionsData.end())
61 {
62 ✗ ActionInfo newActionInfo = actionInfo;
63
64 ✗ newActionInfo.parameter = actionInfo.parameter;
65 ✗ newActionInfo.count = 1;
66 ✗ _state.actionsData.push_back(newActionInfo);
67 ✗ }
68 else
69 {
70 ✗ it->count += 1;
71 }
72 ✗ }
73
74 ✗ void ABot::saveDataActions(const std::string &filename)
75 {
76 ✗ std::ofstream out(filename, std::ios_base::app);
77
78 ✗ out << "Iteration:" << _iteration << std::endl;
79 ✗ for (auto &action : _state.actionsData)
80 {
81 ✗ out << action.getName();
82 ✗ if (!action.parameter.empty())
83 ✗ out << " " << action.parameter;
84 ✗ out << ":" + std::to_string(action.count) << std::endl;
85 }
86 ✗ out << "\n";
87 ✗ }
88
89 ✗ void ABot::addBroadcastAction(const std::string message)
90 {
91 ✗ Message tmp(message);
92 ✗ tmp.format(tmp.content);
93 ✗ std::string messageToSent = tmp.content;
94 ✗ queue.push_back({[this, messageToSent]()
95 ✗ { doAction(BROADCAST, messageToSent); }, "BROADCAST"});
96 ✗ }
97
98 ✗ BotState ABot::getState()
99 {
100 ✗ return _state;
101 }
102
103 ✗ void ABot::setState(BotState state)
104 {
105 ✗ _state = state;
106 ✗ }
107