Initial markdown description of server and client parts of maze game
This commit is contained in:
46
doc/multithread_maze_server.md
Normal file
46
doc/multithread_maze_server.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Реализация сетевого серверного приложения "Лабиринт" на основе многопоточности
|
||||
При подключении клиента сервер порождает новый поток для работы с этим клиентом.
|
||||
|
||||
## Протокол пользовательского уровня
|
||||
UML-диаграмма протокола пользовательского уровня представлена на рисунке ниже.
|
||||

|
||||
|
||||
## Описание работы приложения
|
||||
Сервер maze-server ожидает подключения клиентов по протоколу TCP на заданный порт (по умолчанию 1024).
|
||||
После установки соединения сервер ожидает получения имени игрока от клиента и запускает игровую сессию.
|
||||
Каждому игроку предоставляется ограниченное количество ходов для прохождения случайного лабиринта. Игрок может перемещаться в четырёх направлениях: вперёд, назад, направо, налево. Сервер проверяет возможность перемещения и сообщает игроку о результате действия.
|
||||
Игрок побеждает, если достигает конечной позиции (нода 8) за отведённое число шагов. В противном случае он проигрывает.
|
||||
|
||||
### Запуск сервера
|
||||
Приложение сервера при запуске принимает следующие необязательные ключи:
|
||||
|
||||
- `-h` — задаёт имя хоста, к которому будет привязан сокет;
|
||||
- `-p` — задаёт номер порта для прослушивания;
|
||||
- `-n` — задаёт максимальное количество шагов, разрешённое для одного игрока;
|
||||
- `-s` — включает сервисный режим (без ограничений по количеству шагов).
|
||||
|
||||
```bash
|
||||
./maze-server -h localhost -p 1024 -n 10 -s
|
||||
```
|
||||
По умолчанию сокет сервера связывается с адресом `localhost:1024`, игрокам разрешено 10 шагов, сервисный режим выключен.
|
||||
Завершения работы сервера — `Ctrl+C`.
|
||||
|
||||
Клиент подключается к серверу, отправляет своё имя и получает интерактивную игру в лабиринт.
|
||||
Поддерживаемые команды:
|
||||
- `вперёд` — перемещение вверх;
|
||||
- `направо` — перемещение вправо;
|
||||
- `налево` — перемещение влево;
|
||||
- `назад` — перемещение вниз;
|
||||
- `cдаюсь` — завершение игры досрочно.
|
||||
|
||||
|
||||
Если игрок исчерпал все ходы, но не дошёл до финиша, он считается проигравшим. Финиш находится в позиции (2, 2) (координаты x, y).
|
||||
|
||||
### Запуск клиента
|
||||
Приложение клиента при запуске принимает три необязательных ключа `-h`, `-p` и `-n` с параметрами.
|
||||
Ключи `-h` и `-p` задают сетевой адрес (название хоста и номер порта соответственно) сервера для подключения.
|
||||
```bash
|
||||
./maze_client -h localhost -p 1024
|
||||
```
|
||||
По умолчанию клиент пытается подключиться к адресу `localhost:1024`.
|
||||
|
||||
Reference in New Issue
Block a user