Поддержка  •  Дневник  •  Без рекламы  •  О сайте  •  Реклама  •  Поставить баннер  •  Прислать  •  Хроника  •  Translate Гости: 12    Участники: 0 Авторизация Авторизация   Регистрация 
Метод Научного Тыка
RULVEN
Поиск  
Blackball iMag | интернет-журнал
Каталог


Начало » Разработка ПО » Задача по языку C#: Игра «Крестики Нолики» в консоли
Мне повезёт!

Задача по языку C#: Игра «Крестики Нолики» в консоли


Задача по языку C#: Игра «Крестики Нолики» в консоли
Добавлено: Пн 26.02.2024 • Sergeant
Источник: источник
Просмотров: 37
Комментарии: 0


Рассмотрим интересную задачу по разработке игры «Крестики Нолики» на языке C#. Наш проект будет запускаться в консоли и потребует креативное мышление для решения задачи. 

Ваша задача — реализовать консольную игру "крестики-нолики" с использованием языка программирования C#. Вам нужно создать игровое поле, где два игрока могут поочередно делать ходы и ставить свои знаки ("X" или "O") в свободные ячейки поля. Игра должна продолжаться до тех пор, пока один из игроков не выиграет, заполнив вертикали, горизонтали или диагонали тремя своими знаками подряд, или пока не наступит ничья.

Требования:

  1. Используйте язык программирования C# для реализации игры.
  2. Создайте игровое поле 3x3, где каждая ячейка обозначена числом от 1 до 9.
  3. Реализуйте механизм поочередного хода двух игроков. Первый игрок ставит "X", второй — "O".
  4. Проверьте каждый ход на наличие выигрышной комбинации или наступление ничьи.
  5. Выводите на консоль текущее состояние игрового поля после каждого хода.

Пример реализации проекта:

Пример реализации проекта 

Подсказки:

  • Используйте массив для представления игрового поля.
  • Реализуйте функции для отображения текущего состояния поля, проверки на выигрыш и проверки на ничью.
  • Используйте цикл для поочередного хода каждого игрока.
  • Обеспечьте проверку корректности ввода номера ячейки и наличия свободного места перед каждым ходом.

Это задание позволит вам применить навыки работы с массивами, условиями, циклами и функциями на практике, а также создать простую, но функциональную консольную игру.

Решение задачи

Для решения этой задачи вам потребуется задействовать следующий код:

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;
    }
}


Мне нравится 0   Мне не нравится 0



Комментарии

Чтобы добавить видео с YouTube, нужно написать [@youtube=xxxxx] , где xxxxx – ID видео.


Комментарии: 0
Нет ни одного комментария.
RSS-лента
Поделиться ссылкой:
Блюда из говяжьей вырезки — 10 вкусных рецептов Блюда из говяжьей вырезки — 10 вкусных рецептов
Как уговорить жену на свинг? Как уговорить жену на свинг?
Мечты
Японский колонизатор
Как управлять тимлидами Как управлять тимлидами
Обзор смартфона Sony Xperia XZ2: новый рецепт японской кухни Обзор смартфона Sony Xperia XZ2: новый рецепт японской кухни
Экстремальное программирование: новые возможности
Асинхронный JavaScript: изучаем Async/Await, Callbacks и Promises Асинхронный JavaScript: изучаем Async/Await, Callbacks и Promises
Что должен уметь Frontend разработчик в 2023 году (+Roadmap) Что должен уметь Frontend разработчик в 2023 году (+Roadmap)
История успеха: Logitech История успеха: Logitech

программирование
300+ вопросов по JavaScript на собеседовании Пн 29.04.2024
300+ вопросов по JavaScript на собеседовании
Вт 02.04.2024
Вопросы и ответы для собеседования на позицию frontend-разработчик. Часть 2
Вт 02.04.2024
Вопросы и ответы для собеседования на позицию frontend-разработчик. Часть 1
Почему в вашем коде так сложно разобраться Пн 01.04.2024
Почему в вашем коде так сложно разобраться
C# и .NET: Blazor Пн 25.03.2024
C# и .NET: Blazor
Vite.js: что это и зачем нужно веб-разработчику Пн 18.03.2024
Vite.js: что это и зачем нужно веб-разработчику
GraphQL решает кучу проблем — рассказываем, за что мы его любим Пн 11.03.2024
GraphQL решает кучу проблем — рассказываем, за что мы его любим
Задача по языку C#: Игра «Крестики Нолики» в консоли Пн 26.02.2024
Задача по языку C#: Игра «Крестики Нолики» в консоли
Пн 05.02.2024
Проблема понимания существующего кода, или Как делать иногда [не] надо
Пн 29.01.2024
Плохо девелопмент
Мудрёный код — пожалуй, худший выбор Пн 08.01.2024
Мудрёный код — пожалуй, худший выбор
Регулярные выражения — это не трудно Пн 04.12.2023
Регулярные выражения — это не трудно
Стили именования переменных и функций. Используйте их все Пн 27.11.2023
Стили именования переменных и функций. Используйте их все
Почему хорошие разработчики пишут плохие юнит-тесты Пн 13.11.2023
Почему хорошие разработчики пишут плохие юнит-тесты
Умные программисты пишут STUPID-код Пн 06.11.2023
Умные программисты пишут STUPID-код
Кто такой архитектор ПО и как им стать Пн 23.10.2023
Кто такой архитектор ПО и как им стать
9 тяжёлых уроков, которые я усвоил за 18 лет разработки Пн 24.07.2023
9 тяжёлых уроков, которые я усвоил за 18 лет разработки
Как пасти котов Вт 02.05.2023
Как пасти котов
Год: 2016
Остановись, мгновенье. Медленное программирование — тренд для уставших разработчиков Пн 01.05.2023
Остановись, мгновенье. Медленное программирование — тренд для уставших разработчиков
5 правил работы с суммами Пн 20.03.2023
5 правил работы с суммами
Асинхронное программирование в C# 5.0 Вт 22.12.2020
Асинхронное программирование в C# 5.0
Год: 2013
Пн 12.03.2018
Как улучшить свой стиль программирования?
Книги
Fundamentals of Software Architecture вчера, 10:13
Fundamentals of Software Architecture
Год: 2020
Refactoring with C# Вт 23.04.2024
Refactoring with C#
Год: 2023
Building IoT Visualizations using Grafana Вт 09.04.2024
Building IoT Visualizations using Grafana
Год: 2022

Разработано на основе BlackNight CMS
Release v.2024-05-05
© 2000–2024 Blackball
Дизайн & программирование:
О сайтеРеклама
Visitors
Web-site performed by Sergey Drozdov
BlackballРекламаСтатистикаПоддержка | МузыкаПлейлистыКиноВидеоИгрыАудиоПрограммыСтатьиКартинкиЮморФорумДневник сайтаПрислать контент