- Каждая задача выполняется в виде отдельного проекта с собственным GitHub-репозиторием.
- Код должен проходить ESLint без ошибок.
- Тесты должны обеспечивать 100-процентное покрытие тестируемых функций по строкам.
- Решения должны быть построены на базе шаблона webpack.
В личном кабинете на сайте netology.ru в поле комментария к домашней работе добавьте ссылки на ваши GitHub-проекты.
Вы решили перейти на классы и реализовать нормальную иерархию, выделив в качестве базового класса Character
, а для остальных персонажей создать классы, которые наследуются от него.
Реализуйте описанную иерархию классов: класс Character
— родительский для всех остальных, 6 дочерних классов Bowerman
, Swordsman
, Magician
, Daemon
, Undead
, Zombie
от него наследуются, сами задавая свои характеристики.
Атака/защита:
- Bowman — 25/25.
- Swordsman — 40/10.
- Magician — 10/40.
- Undead — 25/25.
- Zombie — 40/10.
- Daemon — 10/40.
Так как вы создавали классы, чтобы хранить в одном месте свойства объекта и его поведение, то теперь нужно реализовать соответствующие методы.
Реализуйте в классе Character
метод levelUp
, который работает следующим образом:
- на 1 повышает поле
level
; - на 20 % повышает показатели
attack
иdefence
; - приводит показатель
health
к значению 100.
Метод должен работать, только если показатель жизни не равен 0. В противном случае генерируется ошибка — нельзя повысить level умершего.
Не забудьте написать Unit-тесты, которые обеспечивают 100-процентное покрытие тестируемых функций и классов.
Важно: это необязательная задача.
Ваша команда решила внедрить в игру новую функцию — конкретному персонажу можно один раз включить режим powerMode
. Это значит, что показатели персонажа attack
, defence
, health
увеличиваются вдвое, но только на три атаки.
Реализуйте получение показателей attack
, defence
, health
через get
так, чтобы они учитывали, включён ли режим powerMode
. При этом powerMode
тоже нужно реализовать через get
/set
так, чтобы включить его можно было только один раз.
Не забудьте написать Unit-тесты, которые обеспечивают 100-процентное покрытие тестируемых функций и классов.