Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions task5/discription/discription.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#Описание

##Общие сведения

- Игра представляет из себя случайно сгенерированную карту (лабиринт), которую игрок изначально не знает и открывает постепенно по мере продвижения по ней.
- Цель игрока - не умереть и как можно больше исследовать лабиринт.
- В игре присутствует инвентарь, куда игрок может собирать найденные на карте предметы.
- Игрок может надевать на себя найденные предеметы, чтобы усилить свои характеристики.
- По карте разброссаны монстры, которые аттакуют игрока при встрече. Игрок может аттаковать их в ответ.
- Процесс игры осуществляется пошагово.



##Описание типичного пользователя

- При запуске программы, она начинается с окна приветствия, на котором изображён логотип игры.
- Игра начинается при нажатие кнопки `Enter`
- Перемещение по карте осуществляется при помощи кнопок со стрелками.
- Для аттаки монстра необходимо попытаться занять позицию на которой монстр находится в данный момент.
- При вступление в бой у ЛЮБОГО персонажа в игре под ним высвечивается индекатор его здоровья (если у полное здоровье, то индекатор не высвечивается)
- Если в данный момент игрок находится на одной клетке с каким-либо предметом, то по нажатию кнопки `Enter` предмет переместиться в инвентарь пользователя (при условии, что инвентарь в данный момент не полон).
- При нажатие кнопки `q` появляется визуальное изображение инвентаря. При повторном нажатие `q` оно исчезает.
- Итеррирование между ячейками инвентаря происходит при помощи кнопок со стрелками.
- При нажатие кнопки `Enter` выбранный предмет наденется на персонажа (отобразиться в соответствующей секции в инвентаре). Если в данным момент на персонаже уже был надет предмет данного типа, то новый предмет наденется на персонажа, а старый снимется, заняв прежнюю позицию нового в инвентаре.
- При нажатие кнопки `Backspace` выбранный предмет выбросится из инвенторя на карту (при условие, что на занимаемой персонажем позиции ранее не было другого предмета).
- Когда персонажа убивают появляется окно проигрыша
- При нажатие кнопки `Enter` будет запущена новая игра (все характеристики прошлой игры стрираются)

##Диаграмма компонент

Вся система разбивается на следующие компоненты:
- World – вся информация о карте и том, что на ней должно быть изображено, а также средства для создания новой карты.
- Scenes – окна и экраны, которые видит пользователь. Внутри каждой сцены реализована логика отображения ее на экране пользователя.
- Hero и Enemys реализуют интерфейс Character. Игровые объекты с определенным поведением, обеспечивающим взаимодействие их с картой или друг с другом (например, могут перемещаться или атаковать)
- игровые объекты, которые могут взаимодействовать с игроком и миром.

##Диаграмма классов

- Интерфейс Screen предоставляет методы работы с сценами: отображение и обработчик нажатия клавиш
- Классы StartScreen, LoseScreen, PlayScreen и InventoryScreen реализуют интерфейс Screen, являясь стартовой сценой, сценой пройгрыша, игровой сценой и сценой инвнтаря соответственно.
- Интерфейс Character предоставляет методы, используемые персонажами в игре.
- Класс Hero реализует интерфейс Character. Является реализаций управляемого персонажа. Его экземпляр содержится в игровой сцене
- Интерфейс Enemy расширяет интерфейс Character. Используется врагами.
- Класс World является реализацией игрового мира, его экземпляр содержится в игровой сцене.
- Перечисление Item содержит все возможные виды предметов в игре, с которыми может взаимодействовать мир и герой.
- Отображение персонажей и их перемещение по карте реализовано с помощью подписок на классы Drawer и PositionUpdater
- Класс Cell является холдером для предметов, являющихся оружием и бронёй
- Класс Inventory с помощью класса Cell обеспечивает взаимодействие между предметами и персонажем (а именно, персонаж хранит инвентарь, который в свою очередь хранит предметы)

##Диаграмма последовательностей

- Изначально игрок оказывается на стартовом экране (StartScreen). По нажатию клавиши Enter он попадает на основной игровой экран (PlayScreen). Он может путешествовать по нему и совершать различные действия (собирать предметы, атаковать врагов).
- По нажатию клавиши q открывается небольшое окно с инвентарем (при этом бОльшая часть игрового экрана остается видна, но взаимодействовать с ним нельзя). Сделав необходимые операции (выбросить или надеть предмет), игрок возвращается на игровой экран по нажатию клавиши q.
- Если игрок потерял все свои очки здоровья, он автоматически перемещается на экран с поражением (LoseScreen), откуда он может начать новую игру по нажатию клавиши Enter.

##Диаграмма конечных автоматов

Изначально игрок оказывается на стартовом экране (StartScreen), откуда он может попасть только на основной игровой экран (PlayScreen). Находясь на игровом экране, игрок может перейти на один из двух других экранов, переход в первый он инициирует сам (окно инвентаря (InventoryScene)), а другое (LoseScene) появляется, если игрок потерял всё здоровье.

Из окна инвентаря можно только вернуться на игровой экран. Окно с победой аналогично стартовому окну, из него можно начать новую игру (и перейти на новый игровой экран).
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.