cpp #include <iostream> #include <vector> // Размер игрового поля const int fieldSize = 10; // Структура для хранения координат клетки поля struct Point { int x; int y; }; // Класс для хранения информации о корабле class Ship { public: std::vector<Point> body; // Тело корабля - массив координат клеток // Конструктор, который создает корабль на поле Ship(Point position, int size, bool horizontal) { for (int i = 0; i < size; ++i) { Point p = position; if (horizontal) { p.x += i; } else { p.y += i; } body.push_back(p); } } }; // Класс для хранения информации о состоянии игры class Game { public: std::vector<Ship> ships; // Список кораблей на поле bool field[fieldSize][fieldSize]; // Игровое поле // Конструктор, который инициализирует игру Game() { for (int i = 0; i < fieldSize; ++i) { for (int j = 0; j < fieldSize; ++j) { field[i][j] = false; } } } // Функция для проверки корректности координат клетки bool isValidPoint(Point p) { return p.x >= 0 && p.x < fieldSize && p.y >= 0 && p.y < fieldSize; } // Функция для проверки, является ли данная клетка частью корабля bool isShipCell(Point p) { for (const Ship& ship : ships) { for (const Point& point : ship.body) { if (point.x == p.x && point.y == p.y) { return true; } } } return false; } // Функция для вывода игрового поля на экран void printField() { for (int i = 0; i < fieldSize; ++i) { for (int j = 0; j < fieldSize; ++j) { Point currentCell = {j, i}; if (isShipCell(currentCell)) { std::cout << "X "; } else { std::cout << ". "; } } std::cout << std::endl;