commit 4a030f57d2daaea78f4223d5a4c26bae1af78a7a Author: Fernando R Jacobo Date: Wed Jun 26 02:11:37 2024 -0600 Primer commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cba7efc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +a.out diff --git a/API.cpp b/API.cpp new file mode 100644 index 0000000..0f788ae --- /dev/null +++ b/API.cpp @@ -0,0 +1,112 @@ +#include "API.h" + +#include +#include + +int API::mazeWidth() { + std::cout << "mazeWidth" << std::endl; + std::string response; + std::cin >> response; + return atoi(response.c_str()); +} + +int API::mazeHeight() { + std::cout << "mazeHeight" << std::endl; + std::string response; + std::cin >> response; + return atoi(response.c_str()); +} + +bool API::wallFront() { + std::cout << "wallFront" << std::endl; + std::string response; + std::cin >> response; + return response == "true"; +} + +bool API::wallRight() { + std::cout << "wallRight" << std::endl; + std::string response; + std::cin >> response; + return response == "true"; +} + +bool API::wallLeft() { + std::cout << "wallLeft" << std::endl; + std::string response; + std::cin >> response; + return response == "true"; +} + +void API::moveForward(int distance) { + std::cout << "moveForward "; + // Don't print distance argument unless explicitly specified, for + // backwards compatibility with older versions of the simulator + if (distance != 1) { + std::cout << distance; + } + std::cout << std::endl; + std::string response; + std::cin >> response; + if (response != "ack") { + std::cerr << response << std::endl; + throw; + } +} + +void API::turnRight() { + std::cout << "turnRight" << std::endl; + std::string ack; + std::cin >> ack; +} + +void API::turnLeft() { + std::cout << "turnLeft" << std::endl; + std::string ack; + std::cin >> ack; +} + +void API::setWall(int x, int y, char direction) { + std::cout << "setWall " << x << " " << y << " " << direction << std::endl; +} + +void API::clearWall(int x, int y, char direction) { + std::cout << "clearWall " << x << " " << y << " " << direction << std::endl; +} + +void API::setColor(int x, int y, char color) { + std::cout << "setColor " << x << " " << y << " " << color << std::endl; +} + +void API::clearColor(int x, int y) { + std::cout << "clearColor " << x << " " << y << std::endl; +} + +void API::clearAllColor() { + std::cout << "clearAllColor" << std::endl; +} + +void API::setText(int x, int y, const std::string& text) { + std::cout << "setText " << x << " " << y << " " << text << std::endl; +} + +void API::clearText(int x, int y) { + std::cout << "clearText " << x << " " << y << std::endl; +} + +void API::clearAllText() { + std::cout << "clearAllText" << std::endl; +} + +bool API::wasReset() { + std::cout << "wasReset" << std::endl; + std::string response; + std::cin >> response; + return response == "true"; +} + +void API::ackReset() { + std::cout << "ackReset" << std::endl; + std::string ack; + std::cin >> ack; +} diff --git a/API.h b/API.h new file mode 100644 index 0000000..691a1ff --- /dev/null +++ b/API.h @@ -0,0 +1,34 @@ +#pragma once + +#include + +class API { + +public: + + static int mazeWidth(); + static int mazeHeight(); + + static bool wallFront(); + static bool wallRight(); + static bool wallLeft(); + + static void moveForward(int distance = 1); + static void turnRight(); + static void turnLeft(); + + static void setWall(int x, int y, char direction); + static void clearWall(int x, int y, char direction); + + static void setColor(int x, int y, char color); + static void clearColor(int x, int y); + static void clearAllColor(); + + static void setText(int x, int y, const std::string& text); + static void clearText(int x, int y); + static void clearAllText(); + + static bool wasReset(); + static void ackReset(); + +}; diff --git a/Main.cpp b/Main.cpp new file mode 100644 index 0000000..025123b --- /dev/null +++ b/Main.cpp @@ -0,0 +1,23 @@ +#include +#include + +#include "API.h" + +void log(const std::string& text) { + std::cerr << text << std::endl; +} + +int main(int argc, char* argv[]) { + log("Running..."); + API::setColor(0, 0, 'G'); + API::setText(0, 0, "abc"); + while (true) { + if (!API::wallLeft()) { + API::turnLeft(); + } + while (API::wallFront()) { + API::turnRight(); + } + API::moveForward(); + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..9999569 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Simulación de micromouse en mms + +Este programa sirve para simular el algoritmo y el +comportamiento del micromouse.