Курсовой_проект_на_C++_—_Сетевой_Tic_Tac_Toe.pdf
В рамках этого проекта вы разрабатываете консольное клиент-серверное приложение, которое позволяет играть в сетевую версию игры «Крестики-нолики». Игра будет поддерживать поля произвольного размера (не ограничиваясь традиционным размером 3x3), а также предоставит пользователю возможность играть против другого человека или компьютера, используя различные стратегии автоматической игры.
Проект состоит из двух частей: сервера и клиента. Сервер обрабатывает подключения от одного или двух игроков, управляет игровым процессом, проверяет ходы на корректность и обновляет состояние игры, передавая его клиентам. Клиенты подключаются к серверу, отображают текущее состояние игры и отправляют ходы. В случае одиночной игры сервер имитирует второго игрока, используя одну из стратегий искусственного интеллекта.
Реализовать консольное клиент-серверное приложение на языке программирования C++, позволяющее играть в сетевую версию игры «Крестики-нолики» на поле произвольного размера.
Программа должна поддерживать подключение одного или двух клиентов по сети и обеспечивать корректную игровую логику: приём и валидацию ходов, определение победителя и возврат обновлённого состояния поля клиентам. В случае одиночной игры (один клиент) сервер должен иметь возможность выступать в роли второго игрока, используя одну из реализованных стратегий автоматической игры:
случайный выбор, эвристическая стратегия или перебор в глубину.
Реализация сетевого взаимодействия должна быть выполнена с использованием библиотеки ASIO (standalone) без использования сторонних сетевых или графических библиотек.
Формат взаимодействия:
Приложение состоит из двух частей: сервера и клиента. Сервер запускается в режиме ожидания подключений по заданному порту, принимает подключения от одного или двух клиентов и управляет ходом игры. Клиенты подключаются к серверу по IP-адресу и порту, отображают игровое поле и отправляют свои ходы.
Программа должна корректно работать как в режиме двух игроков, так и в режиме «игрок против компьютера». Все данные между клиентом и сервером обмениваются в виде строк в текстовом формате, предпочтительно в виде JSON-структур (можно использовать любую удобную текстовую сериализацию).
<aside> 1️⃣
Этап 1. Запуск программы
</aside>
./tic_tac_toe_server <порт>
Запускает сервер, прослушивающий указанный порт. Ожидает подключения до двух клиентов.
/tic_tac_toe_client <IP-адрес> <порт>
Подключается к серверу по заданному IP и порту, предоставляет пользователю интерфейс для ввода ходов и отображает текущее состояние поля.
Если запускается только один клиент, второй игрок может быть имитирован на стороне сервера с использованием одной из стратегий игры.