Завдання з мови C#: Гра «Хрестики Нолики» у консолі
Розглянемо цікаву задачу розробки гри «Хрестики Нолики» мовою C#. Наш проект запускатиметься в консолі і вимагатиме креативне мислення для вирішення завдання.
Ваше завдання — реалізувати консольну гру «Хрестики Нолики» з використанням мови програмування C#. Вам потрібно створити ігрове поле, де два гравці можуть по черзі робити ходи і ставити свої знаки ("X" або "O") у вільні комірки. Гра повинна продовжуватися доти, доки один із гравців не виграє, заповнивши вертикалі, горизонталі або діагоналі трьома своїми знаками поспіль, або поки не настане нічия.
Вимоги:
- Використовуйте мову програмування C# для реалізації гри.
- Створіть ігрове поле 3x3, де кожен осередок позначений числом від 1 до 9.
- Реалізуйте механізм почергового ходу двох гравців. Перший гравець ставить "X", другий — "O".
- Перевірте кожен хід на наявність виграшної комбінації або наступ нічиї.
- Виведіть на консоль поточний стан ігрового поля після кожного ходу.
Приклад реалізації проекту:

Підказки:
- Використовуйте масив для представлення ігрового поля.
- Реалізуйте функції для відображення поточного стану поля, перевірки на виграш та перевірки на нічию.
- Використовуйте цикл для послідовного ходу кожного гравця.
- Забезпечте перевірку коректності введення номера осередку та наявності вільного місця перед кожним ходом.
Це завдання дозволить вам застосувати навички роботи з масивами, умовами, циклами та функціями на практиці, а також створити просту, але функціональну консольну гру. Успіхів!
Розв'язання задачі
Для вирішення цього завдання вам потрібно буде задіяти наступний код:
using System;
class TicTacToe
{
static char[] board = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
static int currentPlayer = 1; // 1 - хрестики, 2 - нулики
static void Main()
{
int choice;
bool validInput;
do
{
Console.Clear();
DrawBoard();
Console.WriteLine($"Гравець {currentPlayer}, введіть номер комірки:");
// Перевіряємо коректність введення: число від 1 до 9, і комірка не повинна бути зайнята
validInput = int.TryParse(Console.ReadLine(), out choice) && choice >= 1 && choice <= 9 && board[choice - 1] != 'X' && board[choice - 1] != 'O';
if (validInput)
{
// Заповнюємо комірку поточним символом (X або O)
board[choice - 1] = (currentPlayer == 1) ? 'X' : 'O';
// Перевіряємо на наявність виграшної комбінації
if (CheckForWin())
{
Console.Clear();
DrawBoard();
Console.WriteLine($"Переміг гравець {currentPlayer}!");
break;
}
// Перевіряємо на наступ нічиєї
if (CheckForDraw())
{
Console.Clear();
DrawBoard();
Console.WriteLine("Нічия!");
break;
}
// Змінюємо поточного гравця
currentPlayer = (currentPlayer == 1) ? 2 : 1;
}
else
Console.WriteLine("Некоректне введення. Спробуйте знову.");
} while (true);
}
// Виводимо поточний стан ігрового поля
static void DrawBoard()
{
Console.WriteLine($" {board[0]} | {board[1]} | {board[2]} ");
Console.WriteLine("-----------");
Console.WriteLine($" {board[3]} | {board[4]} | {board[5]} ");
Console.WriteLine("-----------");
Console.WriteLine($" {board[6]} | {board[7]} | {board[8]} ");
}
// Перевіряємо на виграш
static bool CheckForWin()
{
return (board[0] == board[1] && board[1] == board[2]) ||
(board[3] == board[4] && board[4] == board[5]) ||
(board[6] == board[7] && board[7] == board[8]) ||
(board[0] == board[3] && board[3] == board[6]) ||
(board[1] == board[4] && board[4] == board[7]) ||
(board[2] == board[5] && board[5] == board[8]) ||
(board[0] == board[4] && board[4] == board[8]) ||
(board[2] == board[4] && board[4] == board[6]);
}
// Перевіряємо на нічию
static bool CheckForDraw()
{
// Перевіряємо, чи залишилися вільні комірки
foreach (char cell in board)
{
if (cell != 'X' && cell != 'O')
return false;
}
return true;
}
}Більше цікавих новин
Логическая задача про стопку монет
Решаем логические задачки
Задача на логику про туриста на озере
Шахматная доска и кости домино