Важно: каждая задача выполняется в виде отдельного проекта с собственным GitHub репозиторием.
Важно: код должен проходить ESLint без ошибок.
Важно: тесты должны обеспечивать 100% покрытие тестируемых функций по строкам.
Важно: решения должны быть построены на базе шаблона Webpack.
В личном кабинете на сайте netology.ru в поле комментария к домашней работе вставьте ссылки на ваш GitHub-проекты.
Вы решили перейти на классы и реализовать иерархию, выделив в качестве базового класса класс Character, а для остальных персонажей создать классы, наследующиеся от него.
Реализуйте описанную иерархию классов: класс Character является родительским для всех остальных, 6 дочерних классов Bowerman, Swordsman, Magician, Daemon, Undead, Zombie от него наследуются, сами задавая свои характеристики.
Свойства, которые должны быть у объектов класса Character:
name- имяtype- типhealth- уровень жизниlevel- уровень персонажаattack- атакаdefence- защита
Конструктор класса должен соответствовать следующим требованиям:
name- строка, min - 2 символа, max - 10type- один из типов (строка): Bowman, Swordsman, Magician, Daemon, Undead, Zombie
В случае, если передаются некорректные значения, должна выбрасываться ошибка (throw new Error(...)).
В вашей функции автоматически должны устанавливаться значения следующих полей:
- health: 100
- level: 1
- Атака/защита:
- 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. В противном случае генерируется ошибка (нельзя повысить левел умершего).
Реализуйте в класса Character метод damage(points), который меняет внутреннее состояние объекта (points - это урон, наносимый персонажу). Метод damage(points) ничего не возвращает и рассчитывает итоговое изменение жизни персонажа (health) по формуле: health -= points * (1 - defence / 100), учитывая, что значение health >= 0.
Не забудьте написать unit-тесты, которые обеспечивают 100% покрытие функций и классов, которые вы тестируете.