Задачи:
- Добавьте в директорию bin новый исполняемый файл с названием brain-prime.js.
- Реализуйте необходимую логику для работы игры.
- Добавьте ещё одну запись в секцию bin в package.json.
- Проверьте работоспособность новой игры.
- Добавьте в README.md аскинему с запуском и демонстрацией различных исходов игры.
- Asciinema
-
Показываем игроку ряд чисел, образующий арифметическую прогрессию, заменив любое из чисел двумя точками. Игрок должен определить это число.
-
Рекомендуемая длина прогрессии – 10 чисел. Длина может генерироваться случайным образом, но должна содержать не менее 5 чисел Позиция спрятанного элемента каждый раз изменяется (выбирается случайным образом)
-
Пример:
brain-progression
Welcome to the Brain Games!
May I have your name? Sam
Hello, Sam!
What number is missing in the progression?
Question: 5 7 9 11 13 .. 17 19 21 23
Your answer: 15
Correct!
Question: 2 5 8 .. 14 17 20 23 26 29
Your answer: 11
Correct!
Question: 14 19 24 29 34 39 44 49 54 ..
Your answer: 59
Correct!
Congratulations, Sam!
В случае, если пользователь даст неверный ответ, необходимо вывести:
Question: 5 7 9 11 13 .. 17 19 21 23
Your answer: 1
'1' is wrong answer ;(. Correct answer was '15'.
Let's try again, Sam!
Задачи:
- Добавьте в директорию bin новый исполняемый файл с названием brain-progression.js
- Реализуйте необходимую логику для работы игры
- Добавьте ещё одну запись в секцию bin в package.json
- Проверьте работоспособность новой игры
- Добавьте в README.md аскинему с запуском и демонстрацией различных исходов игры
- Asciinema
Подсказки
- Чтобы создать последовательность, лучше сделать отдельную функцию. Она будет рассчитывать числа по такой формуле::
currentElement = start + index * step
- Реализовать игру "наибольший общий делитель (НОД)". Суть игры в следующем: пользователю показывается два случайных числа, например, 25 50. Пользователь должен вычислить и ввести наибольший общий делитель этих чисел.
Вывод должен получиться следующий:
brain-gcd
Welcome to the Brain Games!
May I have your name? Sam
Hello, Sam!
Find the greatest common divisor of given numbers.
Question: 25 50
Your answer: 25
Correct!
Question: 100 52
Your answer: 4
Correct!
Question: 3 9
Your answer: 3
Correct!
Congratulations, Sam!
В случае, если пользователь даст неверный ответ, необходимо вывести:
Question: 25 50
Your answer: 1
'1' is wrong answer ;(. Correct answer was '25'.
Let's try again, Sam!
Задачи:
- Добавьте в директорию bin новый исполняемый файл с названием brain-gcd.js.
- Реализуйте необходимую логику для работы игры.
- Добавьте ещё одну запись в секцию bin в package.json.
- Проверьте работоспособность новой игры.
- Добавьте в README.md аскинему с запуском и демонстрацией различных исходов игры.
- Asciinema
Суть игры: пользователю показывается случайное математическое выражение, например 35 + 16, которое нужно вычислить и записать правильный ответ.
Вывод должен получиться следующий:
brain-calc
Welcome to the Brain Games!
May I have your name? Sam
Hello, Sam!
What is the result of the expression?
Question: 4 + 10
Your answer: 14
Correct!
Question: 25 - 11
Your answer: 14
Correct!
Question: 25 * 7
Your answer: 175
Correct!
Congratulations, Sam!
Достаточно реализовать следующие операции: +, - и *. Операции, как и числа, выбираются случайным образом. В случае, если пользователь даст неверный ответ, необходимо вывести:
Question: 25 * 7
Your answer: 145
'145' is wrong answer ;(. Correct answer was '175'.
Let's try again, Sam!
и завершить игру.
На данном этапе можно заметить, что игры имеют общий порядок выполнения (задать вопрос, получить ответ, сравнить ответ и т.д.). Эту логику можно вынести в одно место и переиспользовать внутри конкретных игр для устранения дублирования кода.
BP: hexlet-pairs (если нужно) Принцип открытости закрытости Интерфейс Побочные эффекты Построение правильной архитектуры
- Добавьте в директорию bin новый исполняемый файл с названием brain-calc.js.
- Реализуйте необходимую логику для работы игры.
- Добавьте ещё одну запись в секцию bin в package.json.
- Проверьте работоспособность новой игры.
- Добавьте в README.md аскинему с запуском и демонстрацией различных исходов игры.
- Asciinema HW-7
- Необходимо реализовать игру "Проверка на чётность". Суть игры в следующем: пользователю показывается случайное число. И ему нужно ответить yes, если число чётное, или no — если нечётное:
Welcome to the Brain Games!
May I have your name? Bill
Hello, Bill!
Answer "yes" if the number is even, otherwise answer "no".
Question: 15
Your answer: yes
В случае, если пользователь даст неверный ответ, необходимо завершить игру и вывести сообщение:
'yes' is wrong answer ;(. Correct answer was 'no'.
Let's try again, Bill!
В случае, если пользователь ввел верный ответ, нужно отобразить:
Correct!
и приступить к следующему числу.
Пользователь должен дать правильный ответ на три вопроса подряд. После успешной игры нужно вывести:
Congratulations, Bill!
Вывод должен получиться следующий:
brain-even
Welcome to the Brain Games!
May I have your name? Sam
Hello, Sam!
Answer "yes" if the number is even, otherwise answer "no".
Question: 15
Your answer: no
Correct!
Question: 6
Your answer: yes
Correct!
Question: 7
Your answer: no
Correct!
Congratulations, Sam!
Любой некорректный ввод считается ошибкой (например, n) и равносилен неправильному ответу. Помним про BP: Don’t repeat yourself, YAGNI, KISS, Магические числа, Предикаты
- Добавьте в директорию bin новый исполняемый файл с названием brain-even.
- Реализуйте необходимую логику для работы игры. Файлы, которые мы добавили ранее (src/cli.js, bin/brain-games.js), оставьте, как есть, и не смешивайте с остальным кодом. cli.js не предназначен для описания логики игр.
- Добавьте ещё одну запись в секцию bin в package.json:
"bin": {
"brain-games": "bin/brain-games.js",
"brain-even": "bin/brain-even.js"
}
- Выполните отладку публикации и убедитесь, что после установки пакета команда brain-even в терминале запускает игру.
- Запишите аскинему с примером установки пакета, запуска игры, победой и поражением игрока. Опубликуйте её в сервисе и добавьте ссылку в README.md.
- Asciinema HW-6
- Зарегистрируйтесь в SonarQube и добавьте в него проект
- Добавьте в README бейджи
- Установите и настройте eslint. Документация. Сверяйтесь с nodejs-package
- Создайте задачу make lint, которая должна запускать npx eslint .
- Подключите eslint к своему редактору, убедитесь что все работает. Скорее всего, понадобится поставить eslint глобально
- Исправьте все ошибки, которые выдает линтер
- Подключите библиотеку readline-sync.
- Поприветствуйте пользователя в игре. Спросите у пользователя его имя и поприветствуйте его по имени:
brain-games
Welcome to the Brain Games!
May I have your name? John
Hello, John!
После чего программа завершается. Код, реализующий этот функционал, должен быть в файле src/cli.js относительно директории проекта, а в исполняемом файле bin/brain-games.js сделайте вызов. Для этого код нужно поместить в функцию и импортировать ее в исполняемый файл.
- Проведите отладку публикации новой версии пакета.
- Пропишите в начале файла brain-games.js шебанг с правильно указанным интерпретатором (node) — #!/usr/bin/env node.
- Добавьте запись в секцию bin в package.json:
"bin": {
"brain-games": "bin/brain-games.js"
}
- Добавьте файлу bin/brain-games.js права на исполнение, выполнив в корневой директории проекта команду chmod +x bin/brain-games.js.
- Добавьте в Makefile команду publish, которая выполнит npm publish --dry-run.
- Проведите отладку публикации пакета. Если в процессе выполнения будут получены ошибки или предупреждения, исправьте их.
- Установите пакет в систему с помощью npm link и убедитесь в том, что он работает, запустив brain-games в терминале. Команда npm link может потребовать запуск с sudo.
- Запушьте изменения в репозиторий на гитхабе и переходите к следующему шагу.
- Убедитесь, что у вас установлена последняя (свежая) версия Node.js.
- Добавьте в package.json секцию "type" со значением "module". Она активирует возможность использовать модули без Babel.
- Создайте Makefile с командой install, выполняющей npm ci. Эта команда полезна при первом клонировании репозитория (или после удаления node_modules).
- Добавьте директорию node_modules в файл .gitignore. Зависимости не хранят в репозитории.
- Добавьте в Makefile команду brain-games:
node bin/brain-games.js
Набирать эту команду руками довольно долго, а make brain-games быстро и просто и позволит запускать игру без глобальной установки.
- Прочитайте наши советы по прохождению проектов — они помогут настроиться на правильный лад и расскажут что делать в трудных ситуациях.
- Установите Node.js последней версии в систему глобально (Установка JavaScript).
- Склонируйте созданный репозиторий проекта локально. В результате клонирования репозитория в вашей файловой системе появится корневая директория проекта — в ней будем размещать все файлы проекта. По умолчанию, имя этой директории будет таким же, как имя репозитория. Но, если захотите, вы сами можете выбрать имя (переименовать) для корневой директории.
- Инициализируйте ваш npm-пакет внутри корневой директории проекта, используя команду npm init. При инициализации задайте имя пакета - @hexlet/code.
- Создайте директорию bin и добавьте в неё файл brain-games.js.
- Сделайте так, чтобы запуск файла bin/brain-games.js выводил на экран строку:
node bin/brain-games.js
Welcome to the Brain Games!