Найти в Дзене

Игра: "Крестики-нолики", написанная на языке программирования С++

. - - - - - - - - - - - - - - - - - - Крестики-нолики - - - - - - - - - - - - - - - - - - . Крестики-нолики - это игра для двух игроков, которые по очереди ставят свои символы (крестик или нолик) на игровое поле размером 3x3 клетки. Побеждает тот игрок, который первым сможет выстроить свои символы в ряд по горизонтали, вертикали или диагонали. Если все клетки заполнены, а линий из трех одинаковых символов нет, то игра заканчивается вничью. Игровое поле обычно представляет собой квадрат из 9 клеток. Первый игрок ставит крестик на любую клетку, затем следующий игрок ставит свой значок (нолик) на любую свободную клетку, и так они ходят по очереди до тех пор, пока один из них не выстроит свои символы в ряд или пока не закончится свободное место на игровом поле. При этом стоит учитывать, что предотвращение победы противника имеет большое значение в данной игре. Игроки должны быть аккуратными в своих ходах и пытаться блокировать возможные линии своего оппонента, чтобы снизить вероятность ег

. - - - - - - - - - - - - - - - - - - Крестики-нолики - - - - - - - - - - - - - - - - - - .

Крестики-нолики - это игра для двух игроков, которые по очереди ставят свои символы (крестик или нолик) на игровое поле размером 3x3 клетки.

Побеждает тот игрок, который первым сможет выстроить свои символы в ряд по горизонтали, вертикали или диагонали.

Если все клетки заполнены, а линий из трех одинаковых символов нет, то игра заканчивается вничью.

Игровое поле обычно представляет собой квадрат из 9 клеток.

Первый игрок ставит крестик на любую клетку, затем следующий игрок ставит свой значок (нолик) на любую свободную клетку, и так они ходят по очереди до тех пор, пока один из них не выстроит свои символы в ряд или пока не закончится свободное место на игровом поле.

При этом стоит учитывать, что предотвращение победы противника имеет большое значение в данной игре.

Игроки должны быть аккуратными в своих ходах и пытаться блокировать возможные линии своего оппонента, чтобы снизить вероятность его победы.

1 пример кода игры: "Крестики-нолики"

```

// Подключаем необходимые библиотеки
#include <iostream>

using namespace std;

char board[9] = { '-','-', '-', '-', '-', '-', '-', '-', '-' }; //массив поля

bool has_won(char player) //условие выигрыша
{
int wins[][3] = { {0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6} };
for (int i = 0; i < 8; i++)
{
int count = 0;
for (int j = 0; j <= 2; j++)
{
if (board[wins[i][j]] == player)
count++;
if (count == 3)
return true;
}
}
return false;
}

void print_board() //вывод поля
{
cout << "Игровое поле\n";
cout << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "-\n";
cout << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "-\n";
cout << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "-\n";
cout << "Ваш ход:\n";
}

int get_move()
{
system("cls");
setlocale(0, "ru");

//подсказка
cout << "Управление\n";
cout << "-1-|-2-|-3-\n";
cout << "-4-|-5-|-6-\n";
cout << "-7-|-8-|-9-\n";
cout << endl;

print_board();

int move;
cin >> move;
while (move > 9 || move < 1 || board[move - 1] != '-') //проверка введённого числа
{
cout << "Ведите правильное число (1-9)\n";
cin >> move;
}
return move;

}

char play() //игра и проверка комбинаций
{

int turn = 0;
while (!has_won('X') && !has_won('O') && turn < 9)
{
int move = get_move();
if (turn % 2 == 0)
{
board[move - 1] = 'X';
if (has_won('X'))
{
cout << "Выиграл игрок 'X', ('.')\n";
return 'X';
}
}
else
{
board[move - 1] = 'O';
if (has_won('O'))
{
cout << "Выиграл игрок 'O', ('.')\n";
return 'O';
}
}

turn++;
}
cout << "Ничья :D\n";
return 'D';
}

int main()
{
system("Title TicTacToe");
system("color 1");
// определение цвета 'фигуры'
// 0 - Black
// 1 - Blue
// 2 - Green
// 3 - Aqua
// 4 - Red
// 5 - Purple
// 6 - Yellow
// 7 - White
// 8 - Gray
// 9 - Light blue
// a - Light green
// b - Light aqua
// c - Light red
// d - Light purple
// e - Light yellow
// f - Bright white

play();
int a;
cin >> a;
return 0;

// std::cout << "Hello World!\n";
}

```

2 пример кода игры: "Крестики-нолики"

```

#include <iostream>
#include <cstring>

using namespace std;

const int BOARD_SIZE = 3;
char board[BOARD_SIZE][BOARD_SIZE];

void initBoard() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = ' ';
}
}
}

void printBoard() {
cout << endl;
cout << " 1 2 3" << endl;
for (int i = 0; i < BOARD_SIZE; i++) {
cout << i + 1 << " ";
for (int j = 0; j < BOARD_SIZE; j++) {
cout << board[i][j];
if (j != BOARD_SIZE - 1) {
cout << "|";
}
}
cout << endl;
if (i != BOARD_SIZE - 1) {
cout << " -----" << endl;
}
}
cout << endl;
}

bool makeMove(int row, int col, char player) {
if (row < 1 || row > BOARD_SIZE || col < 1 || col > BOARD_SIZE) {
return false;
}
if (board[row-1][col-1] != ' ') {
return false;
}
board[row-1][col-1] = player;
return true;
}

bool checkWin(char player) {
// Проверка строк и столбцов
for (int i = 0; i < BOARD_SIZE; i++) {
if (board[i][0] == player && board[i][1] == player && board[i][2] == player) {
return true;
}
if (board[0][i] == player && board[1][i] == player && board[2][i] == player) {
return true;
}
}
// Проверка диагоналей
if (board[0][0] == player && board[1][1] == player && board[2][2] == player) {
return true;
}
if (board[0][2] == player && board[1][1] == player && board[2][0] == player) {
return true;
}
return false;
}

int main() {
initBoard();
printBoard();

char currentPlayer = 'X';
int movesLeft = BOARD_SIZE * BOARD_SIZE;

while (movesLeft > 0) {
cout << "Ход игрока " << currentPlayer << endl;
int row, col;
bool validMove = false;
while (!validMove) {
cout << "Введите номер строки: ";
cin >> row;
cout << "Введите номер столбца: ";
cin >> col;
validMove = makeMove(row, col, currentPlayer);
if (!validMove) {
cout << "Неверный ход, попробуйте еще раз." << endl;
}
}
printBoard();
if (checkWin(currentPlayer)) {
cout << "Игрок " << currentPlayer << " выиграл!" << endl;
return 0;
}
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
movesLeft--;
}

cout << "Ничья!" << endl;
return 0;
}
```

С Уважением

Дуплей Максим Игоревич