Важно: каждая задача выполняется в виде отдельного проекта с собственным 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. В противном случае генерируется ошибка (нельзя повысить левел умершего).
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.
Важно: данная задача не является обязательной
Ваша команда решила внедрить в игру новую функцию - конкретному персонажу можно единожды включить режим powerMode
. Что это значит? Показатели attack/defence/health
персонажа увеличиваются вдвое, но ровно на три атаки.
Реализуйте получение показателей attack
/defence
/health
через get
так, чтобы они учитывали включен ли режим powerMode
. При этом powerMode
тоже нужно реализовать через get
/set
так, чтобы включить его можно было только один раз.
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.