- Каждая задача выполняется в виде отдельного проекта с собственным GitHub-репозиторием.
- Код должен проходить ESLint без ошибок.
- Тесты должны обеспечивать 100-процентное покрытие функций по строкам.
- Решения должны быть построены на базе шаблона webpack.
В личном кабинете на сайте netology.ru в поле комментария к домашней работе добавьте ссылки на ваши GitHub-проекты.
Игрок может выбирать персонажей на конкретный раунд, исходя из их состояния, уровня и стратегии игры. Вам нужно не давать возможность добавлять в команду одного и того же персонажа несколько раз.
Создайте класс Team
с методами add
, addAll
и toArray
. Класс должен хранить данные о персонажах команды в поле типа Set
:
class Team {
constructor() {
this.members = new Set();
}
...
}
Метод add
должен добавлять выбранного персонажа в команду (объект класса Character
). При этом такой объект уже существует в команде — дублирования быть не должно, должна генерироваться ошибка.
Метод addAll
должен добавлять произвольное количество персонажей в команду — используйте rest-parameters. Задвоения быть не должно, ошибка генерироваться не должна.
Метод toArray
должен производить конвертацию Set
в массив.
Не забудьте написать Unit-тесты, которые обеспечивают 100-процентное покрытие тестируемых функций и классов.
Вы решили упорядочить работу с ошибками в своём приложении — ввести цетрализованно числовой код ошибки и её описание. При генерации любых ошибок в коде приложения брать их из централизованного хранилища.
Создайте свой класс ErrorRepository
, внутри которого храните Map
. В нём ключ — это код ошибки (число), а значение — текстовое описание (читаемое человеком).
Реализуйте метод translate(code)
, позволяющий по коду получить текст ошибки, а в случае отсутствия такого кода — возвращать строку 'Unknown error'
.
Не забудьте написать Unit-тесты, которые обеспечивают 100-процентное покрытие тестируемых функций и классов.
Важно: это необязательная задача.
Давать пользователю возможность кастомизировать внешний вид приложения — хорошая идея, поэтому вы решили также реализовать поддержку этой функции в игре.
У вас есть дефолтные настройки, хранящиеся в Map
:
'theme': 'dark'
. Другие возможные значения —'light'
,'gray'
.'music': 'trance'
. Другие возможные значения —'pop'
,'rock'
,'chillout'
,'off'
.'difficulty': 'easy'
. Другие возможные значения —'normal'
,'hard'
,'nightmare'
.
Напишите класс Settings
, который содержит:
- набор настроек по умолчанию — хранить в
Map
; - набор пользовательских настроек. Пользователь может установить конкретную настройку по имени и значению. Хранить в
Map
нужно только те настройки, которые пользователь установил. - Get'тер
settings
, который возвращаетMap
, полученный путём наложения пользовательских настроек на дефолтные.
Не забудьте написать Unit-тесты, которые обеспечивают 100-процентное покрытие тестируемых функций и классов.