2025-05-05 15:31:08 +03:00
2025-05-05 15:31:08 +03:00
2025-05-05 15:31:08 +03:00
2025-05-05 15:31:08 +03:00
2025-05-01 01:27:21 +03:00
2025-05-05 15:31:08 +03:00
2025-05-01 01:27:21 +03:00
2025-05-01 01:27:21 +03:00

Реализация сетевого приложения "Лабиринт"

Задание

Разработать приложение, реализующее игру «Лабиринт» с компьютерным противником. Игра заключается в отыскании выхода из лабиринта человеком-игроком за заданное число ходов. Программа-клиент инициирует начало игры, отправляя программе-серверу имя игрока. Сервер генерирует случайным образом несколько стен в «лабиринте» размером 3 на 3 клетки. Игрок стартует в левой нижней клетке, его задача — дойти до противоположного угла поля за заданное число ходов-перемещений. Игрок может отправлять сообщения вида «вперёд», «направо», «налево», «назад», «сдаюсь». Сервер принимает сообщения игрока, проверяет их и на каждое сообщение присылает ответ («успешно», «там стена, осталось Y ходов», «вы проиграли», «вы выиграли»,). После завершения игры сетевое соединение завершается. В сетевом протоколе прикладного уровня следует предусмотреть режим тестирования производительности без ограничений на число ходов игрока.

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

Для приложения необходимо разработать сетевой протокол прикладного уровня на основе TCP.

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

Клиент должен работать по разработанному сетевому протоколу.

Разработанное приложение

Реализация сервера на основе многопоточности и клиента игры-приложения.

Требования

Для сборки и запуска необходима Unix-система и компилятор C++ с поддержкой стандарта c++23.

Необязательно:

  • CMake

Сборка и запуск

Для сборки при помощи CMake необходимо выполнить следующие команды в корневой папке проекта:

mkdir build
cd build
cmake ..
make

Собранные таким способом приложения сервера и клиента будут находиться в папке build.

(Опционально) Генерация документации

Для генерации документации необходимо установить Doxygen и выполнить команду:

doxygen Doxyfile
Description
C++ is my f___ing life!
Readme 137 KiB
Languages
C++ 97.6%
CMake 1.7%
Shell 0.7%