Что есть:
- Простое создание героя с выбором имени, оружия и брони.
- У каждого оружия и брони свои параметры которые влияют на характеристики героя.
- У всех персонажей (героя и противников) есть здоровье, атака, шанс уклониться и шанс нанести критический урон.
- Состояние базы, на которой можно выбрать или сменить оружие/броню, отправиться в путь для сражений, выйти из игры. На нее можно вернуться после сражения, а еще она восстанавливает часть потерянного здоровья.
- В пути встречается три вида противников (гоблин, паук и скелет) и у каждого свой особый эффект: гоблин может оглушить, паук отравляет, скелет усиливает свою атаку после каждого хода.
- В пути можно столкнуться от 1 до 3 случайных противников за раз и биться с ними одновременно, выбирая цель. При этом противники все атакуют вне зависимости от того кого атаковал герой.
- Если один из группы противников умирает, он перестает атаковать и его нельзя атаковать.
- Победа над каждым противником дает герою опыт, который при достижении порогового значения повышает уровень героя и усиливает его.
- В зависимости от уровня героя в пути могут встречаться усиленные версии врагов. Чем выше уровень, тем больше шанс наткнутся на элитного врага.
- При смерти героя игра заканчивается.
- Вся игра разнесена на 13 файлов, каждый из которых отвечает за свою часть. В файле Programm.cs только функция вызова игры.
- Класс персонажа находится в отдельном файле, а классы Герой и Противник наследуют от него общие параметры, находясь каждый в своем файле.
- Все "магические числа" вынесены как константы в отдельный файл.
Архитектура проекта: Program.cs - вызывает метод игры в Game.cs, больше ничего. Game.cs - тут происходит основна логика: формируются персонажи, вызывается метод дествий на базе, запускается бой и происходит награда за поеду. Также тут находятся подписки на события персонажа. GameConstant.cs - тут лежать все константы которые испольуются в других файлах. Character.cs - тут нахдится метод формирования всех персонажей по их общим параметрам. Player.cs - наследует общие параметры от Character.cs и обавляет присущие герою. Enemy.cs - наследует общие параметры от Character.cs и обавляет присущие противника. Weapon.cs - тут хранится информация о доступном оружие. Armor.cs - тут хранится информация о доступной броне. WeaponFactory.cs - забирает данные о выбранном оружие и передат ее параметры герою. ArmorFactory.cs - забирает данные о выбранной броне и передат ее параметры герою. Battle.cs - здесь находится логика цикла боя. Base.cs - здесь находится логика цикла нахождения на базе.