Breaking update
This commit is contained in:
1 parent
896f1bb951
commit
2d0bd162d6
8 files changed
+36
-21
No files matched your search
+5
-5
@@ -1,13 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="429px" preserveAspectRatio="none" style="width:525px;height:429px;background:#FFFFFF;" version="1.1" viewBox="0 0 525 429" width="525px" zoomAndPan="magnify"><defs/><g><rect fill="none" height="206.9297" style="stroke:#000000;stroke-width:1.5;" width="509" x="10" y="169.8281"/><rect fill="none" height="75.3984" style="stroke:#000000;stroke-width:1.5;" width="407.5" x="20" y="294.3594"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="75" x2="75" y1="36.2969" y2="393.7578"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="369.5" x2="369.5" y1="36.2969" y2="393.7578"/><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="90" x="30" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="37" y="24.9951">MazeClient</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="90" x="30" y="392.7578"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="37" y="412.7529">MazeClient</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="95" x="322.5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="329.5" y="24.9951">MazeServer</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="95" x="322.5" y="392.7578"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="329.5" y="412.7529">MazeServer</text><polygon fill="#181818" points="358,63.4297,368,67.4297,358,71.4297,362,67.4297" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75" x2="364" y1="67.4297" y2="67.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="271" x="82" y="62.3638">Установка соединения (TCP, порт 1024)</text><polygon fill="#181818" points="86,92.5625,76,96.5625,86,100.5625,82,96.5625" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="80" x2="369" y1="96.5625" y2="96.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="199" x="92" y="91.4966">Подтверждение соединения</text><polygon fill="#181818" points="358,121.6953,368,125.6953,358,129.6953,362,125.6953" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75" x2="364" y1="125.6953" y2="125.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="163" x="82" y="120.6294">Отправка имени игрока</text><polygon fill="#181818" points="86,150.8281,76,154.8281,86,158.8281,82,154.8281" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="80" x2="369" y1="154.8281" y2="154.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159" x="92" y="149.7622">Подтверждение имени</text><path d="M10,169.8281 L87,169.8281 L87,176.9609 L77,186.9609 L10,186.9609 L10,169.8281 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="206.9297" style="stroke:#000000;stroke-width:1.5;" width="509" x="10" y="169.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="32" x="25" y="182.895">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="99" x="102" y="182.0386">[Игровой цикл]</text><polygon fill="#181818" points="358,204.0938,368,208.0938,358,212.0938,362,208.0938" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75" x2="364" y1="208.0938" y2="208.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="132" x="82" y="203.0278">Отправка команды</text><line style="stroke:#181818;stroke-width:1.0;" x1="370" x2="412" y1="237.2266" y2="237.2266"/><line style="stroke:#181818;stroke-width:1.0;" x1="412" x2="412" y1="237.2266" y2="250.2266"/><line style="stroke:#181818;stroke-width:1.0;" x1="371" x2="412" y1="250.2266" y2="250.2266"/><polygon fill="#181818" points="381,246.2266,371,250.2266,381,254.2266,377,250.2266" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="130" x="377" y="232.1606">Проверка команды</text><polygon fill="#181818" points="86,275.3594,76,279.3594,86,Line truncated
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="429px" preserveAspectRatio="none" style="width:782px;height:429px;background:#FFFFFF;" version="1.1" viewBox="0 0 782 429" width="782px" zoomAndPan="magnify"><defs/><g><rect fill="none" height="206.9297" style="stroke:#000000;stroke-width:1.5;" width="766" x="10" y="169.8281"/><rect fill="none" height="75.3984" style="stroke:#000000;stroke-width:1.5;" width="664.5" x="20" y="294.3594"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="75" x2="75" y1="36.2969" y2="393.7578"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="626.5" x2="626.5" y1="36.2969" y2="393.7578"/><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="90" x="30" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="37" y="24.9951">MazeClient</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="90" x="30" y="392.7578"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="76" x="37" y="412.7529">MazeClient</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="95" x="579.5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="586.5" y="24.9951">MazeServer</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="95" x="579.5" y="392.7578"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81" x="586.5" y="412.7529">MazeServer</text><polygon fill="#181818" points="615,63.4297,625,67.4297,615,71.4297,619,67.4297" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75" x2="621" y1="67.4297" y2="67.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="271" x="82" y="62.3638">Установка соединения (TCP, порт 2000)</text><polygon fill="#181818" points="86,92.5625,76,96.5625,86,100.5625,82,96.5625" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="80" x2="626" y1="96.5625" y2="96.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="199" x="92" y="91.4966">Подтверждение соединения</text><polygon fill="#181818" points="615,121.6953,625,125.6953,615,129.6953,619,125.6953" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75" x2="621" y1="125.6953" y2="125.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="336" x="82" y="120.6294">Отправка имени игрока (строка, размер до 1 Кб)</text><polygon fill="#181818" points="86,150.8281,76,154.8281,86,158.8281,82,154.8281" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="80" x2="626" y1="154.8281" y2="154.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159" x="92" y="149.7622">Подтверждение имени</text><path d="M10,169.8281 L87,169.8281 L87,176.9609 L77,186.9609 L10,186.9609 L10,169.8281 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="206.9297" style="stroke:#000000;stroke-width:1.5;" width="766" x="10" y="169.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="32" x="25" y="182.895">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="99" x="102" y="182.0386">[Игровой цикл]</text><polygon fill="#181818" points="615,204.0938,625,208.0938,615,212.0938,619,208.0938" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="75" x2="621" y1="208.0938" y2="208.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="483" x="82" y="203.0278">Отправка команды (вперёд/направо/назад/налево) - (строка, до 1 Кб)</text><line style="stroke:#181818;stroke-width:1.0;" x1="627" x2="669" y1="237.2266" y2="237.2266"/><line style="stroke:#181818;stroke-width:1.0;" x1="669" x2="669" y1="237.2266" y2="250.2266"/><line style="stroke:#181818;stroke-width:1.0;" x1="628" x2="669" y1="250.2266" y2="250.2266"/><polygon fill="#181818" points="638,246.2266,628,250.2266,638,254.2266,634,250.2266" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLengthLine truncated
|
||||
@startuml
|
||||
MazeClient -> MazeServer: Установка соединения (TCP, порт 1024)
|
||||
MazeClient -> MazeServer: Установка соединения (TCP, порт 2000)
|
||||
MazeServer -> MazeClient: Подтверждение соединения
|
||||
MazeClient -> MazeServer: Отправка имени игрока
|
||||
MazeClient -> MazeServer: Отправка имени игрока (строка, размер до 1 Кб)
|
||||
MazeServer -> MazeClient: Подтверждение имени
|
||||
loop Игровой цикл
|
||||
MazeClient -> MazeServer: Отправка команды
|
||||
MazeClient -> MazeServer: Отправка команды (вперёд/направо/назад/налево) - (строка, до 1 Кб)
|
||||
MazeServer -> MazeServer: Проверка команды
|
||||
MazeServer -> MazeClient: Отправка ответа
|
||||
MazeServer -> MazeClient: Отправка ответа (успешно/там стена/ошибка) - (строка такого же размера)
|
||||
alt Команда "сдаюсь" или конец игры
|
||||
MazeClient -> MazeServer: Закрытие соединения
|
||||
MazeServer -> MazeClient: Подтверждение закрытия
|
||||
|
||||
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 8.0 KiB |
@@ -7,7 +7,7 @@ UML-диаграмма протокола пользовательского у
|
||||

|
||||
|
||||
## Описание работы приложения
|
||||
Сервер `MazeServer` ожидает подключения клиентов по протоколу TCP на заданный порт (по умолчанию 1024). После установления соединения сервер запрашивает имя игрока, а затем начинает игру в лабиринте. Лабиринт генерируется случайным образом при старте каждой новой игровой сессии. Гарантируется наличие хотя бы одного пути из начальной точки `(0, 0)` в конечную точку `(2, 2)`. Добавление дополнительных стен происходит с соблюдением условия достижимости цели.
|
||||
Сервер `MazeServer` ожидает подключения клиентов по протоколу TCP на заданный порт (по умолчанию 2000). После установления соединения сервер запрашивает имя игрока, а затем начинает игру в лабиринте. Лабиринт генерируется случайным образом при старте каждой новой игровой сессии. Гарантируется наличие хотя бы одного пути из начальной точки `(0, 0)` в конечную точку `(2, 2)`. Добавление дополнительных стен происходит с соблюдением условия достижимости цели.
|
||||
|
||||
Cхема и нумерация клеток лабиринта представлена на рисунке ниже.
|
||||
|
||||
@@ -25,9 +25,9 @@ Cхема и нумерация клеток лабиринта представ
|
||||
- `-s` — включает сервисный режим (без ограничений по количеству шагов).
|
||||
|
||||
```bash
|
||||
./maze-server -h localhost -p 1024 -n 10 -s
|
||||
./maze-server -h localhost -p 2000 -n 10 -s
|
||||
```
|
||||
По умолчанию сокет сервера связывается с адресом `localhost:1024`, игрокам разрешено 10 шагов, сервисный режим выключен.
|
||||
По умолчанию сокет сервера связывается с адресом `localhost:2000`, игрокам разрешено 10 шагов, сервисный режим выключен.
|
||||
|
||||
Завершение работы сервера — `Ctrl+C`.
|
||||
|
||||
@@ -48,7 +48,7 @@ Cхема и нумерация клеток лабиринта представ
|
||||
|
||||
- `-p` — задаёт номер порта сервера.
|
||||
```bash
|
||||
./maze_client -h localhost -p 1024
|
||||
./maze_client -h localhost -p 2000
|
||||
```
|
||||
По умолчанию клиент пытается подключиться к адресу `localhost:1024`.
|
||||
По умолчанию клиент пытается подключиться к адресу `localhost:2000`.
|
||||
|
||||
Reference in new issue
Block a user