
С++ Створіть гру «Морський Бій».. Головні особливості реалізації гри: ● Режими гри: o Людина -
комп'ютер. o Комп'ютер - комп'ютер. ● Розміщення кораблів: o Гравець розставляє вручну. o Комп'ютер розставляє замість гравця. ● Комп'ютер може грати у двох режимах: o Випадковий постріл. o Інтелектуальна гра. Комп'ютер будує стратегію гри, а не стріляє випадково. ● Відображати поточний стан ігрового поля гравця та комп'ютера. ● Можливість зупинки, припинення, нового запуску гри

Ответы на вопрос

Ответ:
Попробуй
Объяснение:
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
const int BOARD_SIZE = 10;
const char SHIP_SYMBOL = 'S';
const char HIT_SYMBOL = 'X';
const char MISS_SYMBOL = 'O';
const char EMPTY_SYMBOL = '.';
// Функція для очищення екрану консолі
void clearScreen()
{
system("clear");
}
// Клас для представлення ігрового поля
class Board
{
public:
vector<vector<char>> grid;
Board()
{
grid.resize(BOARD_SIZE, vector<char>(BOARD_SIZE, EMPTY_SYMBOL));
}
// Функція для відображення ігрового поля
void display()
{
cout << " ";
for (int i = 0; i < BOARD_SIZE; ++i)
cout << i << " ";
cout << endl;
for (int i = 0; i < BOARD_SIZE; ++i)
{
cout << i << " ";
for (int j = 0; j < BOARD_SIZE; ++j)
cout << grid[i][j] << " ";
cout << endl;
}
}
// Функція для розміщення кораблів
void placeShips()
{
for (int i = 1; i <= 5; ++i)
{
int shipSize = 6 - i;
cout << "Розмістіть корабль розміром " << shipSize << endl;
for (int j = 0; j < i; ++j)
{
int x, y;
cout << "Введіть координати (x, y) для частини " << j + 1 << ": ";
cin >> x >> y;
while (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || grid[x][y] != EMPTY_SYMBOL)
{
cout << "Некоректні координати. Спробуйте ще раз: ";
cin >> x >> y;
}
grid[x][y] = SHIP_SYMBOL;
}
clearScreen();
display();
}
}
// Функція для перевірки чи виграв гравець
bool checkWin()
{
for (int i = 0; i < BOARD_SIZE; ++i)
{
for (int j = 0; j < BOARD_SIZE; ++j)
{
if (grid[i][j] == SHIP_SYMBOL)
return false;
}
}
return true;
}
};
// Функція для випадкового пострілу комп'ютера
void computerRandomShoot(Board &opponentBoard)
{
int x, y;
do
{
x = rand() % BOARD_SIZE;
y = rand() % BOARD_SIZE;
} while (opponentBoard.grid[x][y] == HIT_SYMBOL || opponentBoard.grid[x][y] == MISS_SYMBOL);
if (opponentBoard.grid[x][y] == SHIP_SYMBOL)
{
cout << "Комп'ютер влучив у ваш корабель!" << endl;
opponentBoard.grid[x][y] = HIT_SYMBOL;
}
else
{
cout << "Комп'ютер промахнувся." << endl;
opponentBoard.grid[x][y] = MISS_SYMBOL;
}
}
// Функція для інтелектуальної гри комп'ютера
void computerIntelligentShoot(Board &opponentBoard, vector<pair<int, int>> &possibleMoves)
{
int index = rand() % possibleMoves.size();
int x = possibleMoves[index].first;
int y = possibleMoves[index].second;
possibleMoves.erase(possibleMoves.begin() + index);
if (opponentBoard.grid[x][y] == SHIP_SYMBOL)
{
cout << "Комп'ютер влучив у ваш корабель!" << endl;
opponentBoard.grid[x][y] = HIT_SYMBOL;
}
else
{
cout << "Комп'ютер промахнувся." << endl;
opponentBoard.grid[x][y] = MISS_SYMBOL;
}
}
// Функція для гри між гравцем і комп'ютером
void playHumanVsComputer()
{
Board playerBoard, computerBoard;
vector<pair<int, int>> possibleMoves;
clearScreen();
cout << "Гравець, розташуйте свої кораблі." << endl;
playerBoard.display();
playerBoard.placeShips();
cout << "Комп'ютер розташовує свої кораблі..." << endl;
computerBoard.placeShips();
clearScreen();
cout << "Гра розпочалась!" << endl;
while (true)
{
cout << "Ваш хід:" << endl;
cout << "Ваше поле:" << endl;
playerBoard.display();
cout << "Поле комп'ютера:" << endl;
computerBoard.display();
int x, y;
cout << "Введіть координати (x, y) для пострілу: ";
cin >> x >> y;
while (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || computerBoard.grid[x][y] == HIT_SYMBOL || computerBoard.grid[x][y] == MISS_SYMBOL)
{
cout << "Некоректні координати. Спробуйте ще раз: ";
cin >> x >> y;
}
if (computerBoard.grid[x][y] == SHIP_SYMBOL)
{
cout << "Ви влучили у корабель комп'ютера!" << endl;
computerBoard.grid[x][y] = HIT_SYMBOL;
if (computerBoard.checkWin())
{
cout << "Ви перемогли!" << endl;
break;
}
}
else
{
cout << "Ви промахнулися." << endl;
computerBoard.grid[x][y] = MISS_SYMBOL;
}
cout << "Хід комп'ютера:" << endl;
computerRandomShoot(playerBoard);
if (playerBoard.checkWin())
{
cout << "Комп'ютер переміг!" << endl;
break;
}
}
}
// Функція для гри між двома комп'ютерами
void playComputerVsComputer()
{
Board board1, board2;
vector<pair<int, int>> possibleMoves;
cout << "Перший комп'ютер розташовує свої кораблі..." << endl;
board1.placeShips();
cout << "Другий комп'ютер розташовує свої кораблі..." << endl;
board2.placeShips();
clearScreen();
cout << "Гра розпочалась!" << endl;
while (true)
{
cout << "Хід першого комп'ютера:" << endl;
computerRandomShoot(board2);
if (board2.checkWin())
{
cout << "Перший комп'ютер переміг!" << endl;
break;
}
cout << "Хід другого комп'ютера:" << endl;
computerIntelligentShoot(board1, possibleMoves);
if (board1.checkWin())
{
cout << "Другий комп'ютер переміг!" << endl;
break;
}
}
}
int main()
{
srand(static_cast<unsigned>(time(0)));
int choice;
cout << "Виберіть режим гри:" << endl;
cout << "1. Людина проти комп'ютера" << endl;
cout << "2. Комп'ютер проти комп'ютера" << endl;
cout << "Ваш вибір: ";
cin >> choice;
if (choice == 1)
playHumanVsComputer();
else if (choice == 2)
playComputerVsComputer();
else
cout << "Некоректний вибір." << endl;
return 0;
}



Створення повноцінної гри "Морський бій" вимагає багато коду, але я можу надати вам загальну структуру та ідеї, як реалізувати цю гру на мові програмування C++.
Для початку, вам знадобляться класи та функції, що представляють елементи гри. Ось загальна структура гри:
Клас
Game
: Цей клас буде відповідати за основну логіку гри. Він буде містити методи для початку гри, ходу гравця, ходу комп'ютера та перевірки на завершення гри.Клас
Player
: Цей клас буде відповідати за гравця, його поле з кораблями та методи для взаємодії з полем (розстановка кораблів, стрільба тощо).Клас
ComputerPlayer
: Цей клас буде представляти комп'ютерного гравця і мати різні режими гри (випадковий постріл, інтелектуальна гра). У режимі інтелектуальної гри, комп'ютер може будувати стратегію гри, вибираючи потенційні цілі на основі результатів попередніх ходів.Клас
Board
: Цей клас буде відповідати за зберігання і відображення стану ігрового поля для кожного гравця (гравець та комп'ютер).Інші допоміжні класи: Наприклад, клас для представлення кораблів і їх стану, а також можливо класи для відображення графічного інтерфейсу.
Ось заготовка коду на C++ для створення такої гри:
cpp#include <iostream>
class Board {
// Клас для представлення ігрового поля гравця
// Включає методи для розстановки кораблів і відображення поля.
};
class Ship {
// Клас для представлення кораблів
// Може включати інформацію про розташування та стан кораблів.
};
class Player {
// Клас для представлення гравця
// Включає метод


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili