/
polytech_kolomna
/
aipackaging
Обзор
Документация
Войти
/
polytech_kolomna
/
aipackaging
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
FigureGenerator
src/data_format/figure.cpp
127 строк
2 KB
Olegh
Merge branch 'master' of https://gitverse.ru/polytech_kolomna/aipackaging into data_format
15 окт 2025, 00:21
15 окт 2025, 00:21
a226d21
Код
Авторство
О чём код?
#include <sstream> #include <figure.h> Figure::Figure() { } Figure::Figure(Cell base_cell) { cells_.push_back(base_cell); } Figure::Figure(std::vector<Cell> cells) : cells_(cells) { } const std::vector<Cell>& Figure::get_cells() const { return cells_; } std::string Figure::to_aipon() const { std::stringstream out, array; out << '('; if (!cells_.empty()) { /* Формат: перечисление ID ячеек и их координат */ for (int i = 0; i < cells_.size(); ++i) { out << "#C" << cells_[i].get_id() << " (" << cells_[i].get_pos().x << ' ' << cells_[i].get_pos().y << ')'; if (i + 1 < cells_.size()) out << ' '; } } out << ')'; return out.str(); } void Figure::add_cell(Cell c, Point2D coords) { c.set_pos(coords); cells_.push_back(c); } void Figure::clear_cells() { cells_.clear(); } bool Figure::move_right() { for (int i = 0; i < cells_.size(); i++) { Point2D coord(cells_[i].get_pos().x, cells_[i].get_pos().y + 1); cells_[i].set_pos(coord); } return true; } bool Figure::move_left() { for (int i = 0; i < cells_.size(); i++) { Point2D coord(cells_[i].get_pos().x, cells_[i].get_pos().y - 1); cells_[i].set_pos(coord); } return true; } bool Figure::move_up() { for (int i = 0; i < cells_.size(); i++) { Point2D coord(cells_[i].get_pos().x - 1, cells_[i].get_pos().y); cells_[i].set_pos(coord); } return true; } bool Figure::move_down() { for (int i = 0; i < cells_.size(); i++) { Point2D coord(cells_[i].get_pos().x + 1, cells_[i].get_pos().y); cells_[i].set_pos(coord); } return true; } Point2D Figure::top_up_cell() { Cell cell; cell.set_pos(cells_[0].get_pos()); for (int i = 0; i < cells_.size(); i++) { if (cells_[i].get_pos().x <= cell.get_pos().x) { cell.set_pos(cells_[i].get_pos()); } } return cell.get_pos(); } Point2D Figure::top_left_cell() { Cell cell; cell.set_pos(cells_[0].get_pos()); for (int i = 0; i < cells_.size(); i++) { if (cells_[i].get_pos().x <= cell.get_pos().x && cells_[i].get_pos().y <= cell.get_pos().y) { cell.set_pos(cells_[i].get_pos()); } } return cell.get_pos(); }