diff --git a/include/Coordinate.h b/include/Coordinate.h new file mode 100644 index 0000000..832383a --- /dev/null +++ b/include/Coordinate.h @@ -0,0 +1,20 @@ +#ifndef COORDINATE_H +#define COORDINATE_H + +#include + +class Coordinate +{ +private: + int m_x; + int m_y; + +public: + Coordinate(int x, int y) : m_x(x), m_y(y) {}; + int getX() const { return m_x; } + int getY() const { return m_y; } + + std::string toString() const; +}; + +#endif diff --git a/include/Move.h b/include/Move.h index 8fe3407..b5f2269 100644 --- a/include/Move.h +++ b/include/Move.h @@ -4,12 +4,16 @@ #include #include #include +#include +#include "Coordinate.h" class Move { private: std::vector moves; + static const std::vector coordinateMap; + public: Move(); @@ -21,11 +25,9 @@ class Move int length(); std::vector getMoves() { return moves; } - void printMoves() { - for (int m : moves) { - std::cout << m << "->" << std::endl; - } - } + void printMoves() const; + + std::string toString() const; }; #endif diff --git a/src/Coordinate.cpp b/src/Coordinate.cpp new file mode 100644 index 0000000..84ffae1 --- /dev/null +++ b/src/Coordinate.cpp @@ -0,0 +1,7 @@ +#include +#include "Coordinate.h" + +std::string Coordinate::toString() const +{ + return "(" + std::to_string(getX()) + ":" + std::to_string(getY()) + ")"; +} diff --git a/src/Move.cpp b/src/Move.cpp index eba1683..b8c9887 100644 --- a/src/Move.cpp +++ b/src/Move.cpp @@ -1,6 +1,20 @@ #include #include "Move.h" +const std::vector Move::coordinateMap = { + Coordinate(0, 6), Coordinate(1, 7), Coordinate(4, 0), + Coordinate(5, 1), Coordinate(6, 2), Coordinate(7, 3), + Coordinate(0, 4), Coordinate(1, 5), Coordinate(2, 6), + Coordinate(3, 7), Coordinate(6, 0), Coordinate(7, 1), + Coordinate(0, 2), Coordinate(1, 3), Coordinate(2, 4), + Coordinate(3, 5), Coordinate(4, 6), Coordinate(5, 7), + Coordinate(0, 0), Coordinate(1, 1), Coordinate(2, 2), + Coordinate(3, 3), Coordinate(4, 4), Coordinate(5, 5), + Coordinate(6, 6), Coordinate(7, 7), Coordinate(2, 0), + Coordinate(3, 1), Coordinate(4, 2), Coordinate(5, 3), + Coordinate(6, 4), Coordinate(7, 5) +}; + Move::Move() : moves() {}; Move::Move(int start) @@ -32,3 +46,25 @@ int Move::length() { return moves.size(); } + +void Move::printMoves() const +{ + int movesLength = moves.size(); + for (int i = 0; i < movesLength; ++i) { + std::cout << coordinateMap[moves[i]].toString(); + if (i != movesLength - 1) std::cout << ":"; + } + std::cout << std::endl; +} + +std::string Move::toString() const +{ + std::string result; + int movesLength = moves.size(); + for (int i = 0; i < movesLength; ++i) { + result += coordinateMap[moves[i]].toString(); + if (i != movesLength - 1) result+= ":"; + } + + return result; +}