Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

94 Commits

Folders and files

Repository files navigation

Технологии программирования, весна 2024

Ким Михаил, Б05-327

Сборка

Следующие команды собирают / пересобирают проект. Обе команды предполагают, что будут вызваны из корневой директории проекта

./scripts/build.sh [--test]
./scripts/rebuild.sh [--test]

Скомпилированный исполняемый файл будет лежать в директории /bin

В обоих командах флаг --test позволяет собрать тесты. При этом файл exe.out не будет собран

Запустить исполняемые файлы можно при помощи команд

./scripts/run.sh [OPTIONS]
./scripts/run_tests.sh

Первая запустит основной исполняемый файл, а вторая - тесты. Обе команды предполагают существование соответствующего исполняемого файла

Для команды ./scripts/run.sh есть опциональные флаги --interface, или же -i. Флаг позволяет выбрать интерфейс, с которым запустится программа. На данный момент поддерживается только один тип интерфейса, который является значением по умолчанию. Можно его явно указать, прописав после флага terminal

Также можно воспользоваться сборкой через docker

docker build .
docker run -i <image>

Диаграммы UML

1. UML class diagram

Class diagram

Battlefield хранит локальную копию полей игроков. Каждая ячейка поля игрока содержит одно из чисел:

  • 0 - клетка пустая
  • number - в этой клетке стоит еще живая ячейка корабля под номером number
  • -number - в этой клетке стоит подбитая ячейка корабля под номером number

Каждая ячейка поля противника содержит одно из чисел:

  • INF - пустая клетка, в которую еще не стреляли
  • 0 - пустая клетка, по которой пытались попасть
  • +/- number - аналогично полю игрока

Command - абстрактный класс, соответствует действиям игрока. Его наследники взаимодействуют напрямую с Battlefield

Observable - наблюдаемый класс, о каких-либо изменениях он уведомляет наблюдателя (Observer)

RemoteServer - наследник Observable. Передает информацию о действиях игроков на сервер. И принимает информацию от сервера, уведомляя наблюдателя

Interactor - наблюдатель за RemoteServer. Все изменения копирует в локальную копию (Battlefield). Кроме того, вызывает команды. Если запрос корректен, отправляет изменения в RemoteServer

Adapter - интерфейс пользователя. Его методы проверяют введенные данные на корректность, а потом отправляют запрос к Interactor. От него наследуются конкретные реализации

2. UML use case diagram

Use case diagram

Игрок может пользоваться только двумя методами - AddShip и FireAt. Первый из них вызывается 10 раз в начале игры и больше вызываться не может. Второй будет вызываться на каждом ходе игрока

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages