Untitled
unknown
c_cpp
2 years ago
4.5 kB
10
Indexable
Never
#include <iostream> using namespace std; //Оголошення константи для максимального розміру поля const int MAX_FIELD_SIZE = 10; //Оголошення змінних для розміру поля та самого поля int fieldSize; char field[MAX_FIELD_SIZE][MAX_FIELD_SIZE]; //Функція, яка створює пусте поле заданого розміру void createField() { for (int i = 0; i < fieldSize; i++) { for (int j = 0; j < fieldSize; j++) { field[i][j] = '-'; } } } //Функція, яка виводить поле на екран void printField() { for (int i = 0; i < fieldSize; i++) { for (int j = 0; j < fieldSize; j++) { cout << field[i][j] << " "; } cout << endl; } } //Функція, яка перевіряє, чи є переможець bool checkWin(char player) { //Перевірка по горизонталі for (int i = 0; i < fieldSize; i++) { bool win = true; for (int j = 0; j < fieldSize; j++) { if (field[i][j] != player) { win = false; break; } } if (win) { return true; } } //Перевірка по вертикалі for (int j = 0; j < fieldSize; j++) { bool win = true; for (int i = 0; i < fieldSize; i++) { if (field[i][j] != player) { win = false; break; } } if (win) { return true; } } //Перевірка по діагоналі (зліва направо) bool win = true; for (int i = 0; i < fieldSize; i++) { if (field[i][i] != player) { win = false; break; } } if (win) { return true; } //Частина 3: Перевірка на виграш //Перевірка по діагоналі (справа наліво) win = true; for (int i = 0; i < fieldSize; i++) { if (field[i][fieldSize - 1 - i] != player) { win = false; break; } } if (win) { return true; } //Якщо немає переможця return false; } //Функція, яка дозволяє гравцю зробити хід void makeMove(char player) { int row, col; cout << "Гравець " << player << ", введіть рядок та стовпчик для ходу: "; cin >> row >> col; //Перевірка на правильність введення рядка та стовпчика while (row < 1 || row > fieldSize || col < 1 || col > fieldSize || field[row - 1][col - 1] != '-') { cout << "Неправильний ввід. Введіть рядок та стовпчик ще раз: "; cin >> row >> col; } //Додавання символу гравця на поле field[row - 1][col - 1] = player; } //Основна програма int main() { //Введення розміру поля cout << "Введіть розмір поля (від 3 до " << MAX_FIELD_SIZE << "): "; cin >> fieldSize; //Перевірка на правильність введення розміру поля while (fieldSize < 3 || fieldSize > MAX_FIELD_SIZE) { cout << "Неправильний ввід. Введіть розмір поля ще раз: "; cin >> fieldSize; } //Створення пустого поля та виведення його на екран createField(); printField(); //Головний цикл гри char currentPlayer = 'X'; while (true) { //Гравець робить хід makeMove(currentPlayer); //Виведення поля на екран після ходу printField(); //Перевірка на переможця if (checkWin(currentPlayer)) { cout << "Гравець " << currentPlayer << " переміг!"; break; } //Перевід ходу на іншого гравця if (currentPlayer == 'X') { currentPlayer = 'O'; } else { currentPlayer = 'X'; } } return 0; }