/
polytech_kolomna
/
aipackaging
Обзор
Документация
Войти
/
polytech_kolomna
/
aipackaging
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
FigureGenerator
src/data_format/boardcontroller.cpp
204 строки
4 KB
Olegh
lower case
28 окт 2025, 20:44
28 окт 2025, 20:44
bc1a1ea
Код
Авторство
О чём код?
#include <sstream> #include"BoardController.h" #include <processor.h> /* std::string posToStr(Pos pos) { std::string pos_str; switch (pos) { case Pos::UP: pos_str = "UP"; break; case Pos::DOWN: pos_str = "DOWN"; break; case Pos::LEFT: pos_str = "LEFT"; break; case Pos::RIGHT: pos_str = "RIGHT"; break; default: break; } return pos_str; } Pos strToPos(std::string str) { Pos p; if (str == "UP") p = Pos::UP; else if (str == "DOWN") p = Pos::DOWN; else if (str == "LEFT") p = Pos::LEFT; else if (str == "RIGHT") p = Pos::RIGHT; return p; } void BoardController::create_board(size_t row, size_t col) { board = Board(row, col); out.open("info.txt"); out << get_string(board); out.close(); } //void BoardController::delete_board() //{ // board.Delete(); // out.open("info.txt", std::ios::app); // out << "DELETE_BOARD\n"; // out.close(); //} void BoardController::create_cell(Cell& cell) { out.open("info.txt", std::ios::app); out << "CREATE_CELL #C" << cell.get_id() << " " << cell.to_aipon() << std::endl; out.close(); } void BoardController::create_figure(Figure& fig, int id) { out.open("info.txt", std::ios::app); out << "CREATE_CELL #C" << (*figures[id]).get_cells()[1].get_id() << " " << (*figures[id]).get_cells()[1].to_aipon() << std::endl; out <<"CREATE_FIGURE #F" << id<< " " << fig.to_aipon() << std::endl; out.close(); } void BoardController::add_figure_to_board(int id) { out.open("info.txt", std::ios::app); bool result = board.add_figure(figures[id]); out << "ADD_FIGURE_TO_BOARD #F" << id << " -> " << (result ? " true\n" : " false\n"); out.close(); } void BoardController::delete_figure(int id) { out.open("info.txt", std::ios::app); bool result = board.delete_figure(id); out << "DELETE_FIGURE_FROM_BOARD #F" << id <<" -> " << (result ? " true\n" : " false\n"); out.close(); } void BoardController::move_figure(int id, Pos pos) { out.open("info.txt", std::ios::app); bool result = board.move_figure(id, pos); out << "MOVE_FIGURE " << posToStr(pos) <<" #F" << id << " -> "<< (result ? " true\n" : " false\n"); out.close(); } void BoardController::parser(std::string &str) { std::stringstream ss(str); std::string buffer; ss >> buffer; if (buffer == "CREATE_BOARD") { std::string col, lin; ss >> buffer; bool afterComma = false; for (int i = 0; i < buffer.size(); i++) { if (buffer[i] >= '0' && buffer[i] <= '9') { if (!afterComma) lin += buffer[i]; else col += buffer[i]; } else if (buffer[i] == ',') { afterComma = true; } } int lin_ = std::stoi(lin); int col_ = std::stoi(col); Board b(lin_, col_); board = b; } /*else if (buffer == "DELETE_BOARD") { board.Delete(); } else if (buffer == "ADD_FIGURE_TO_BOARD") { ss >> buffer; ss >> buffer; int ID = 0; std::string id; for (int i = 1; i < buffer.length(); i++) { id += buffer[i]; } ID = std::stoi(id); board.add_figure(figures[ID]); } else if (buffer == "DELETE_FIGURE_FROM_BOARD") { ss >> buffer; ss >> buffer; int ID = 0; std::string id; for (int i = 1; i < buffer.length(); i++) { id += buffer[i]; } ID = std::stoi(id); board.delete_figure(ID); //board.print(); } else if (buffer == "MOVE_FIGURE") { ss >> buffer; std::string pos = buffer; ss >> buffer; ss >> buffer; int ID = 0; std::string id; for (int i = 1; i < buffer.length(); i++) { id += buffer[i]; } ID = std::stoi(id); board.move_figure(ID, strToPos(pos)); //board.print(); } else { std::cout << "INCORRECT COMMAND\n"; } } */ //в качестве параметра используется название текстового файла ,который будет считываться //void reader(std::string a) //{ // std::ifstream in(a); // std::string line; // BoardController scene; // while (std::getline(in, line)) // { // scene.parser(line); // } //}