DevMethology-lab2

Overview

Usage
Склонируйте себе проект:
https://github.com/MikhailLipanin/DevMethology-lab2.git
Для того чтобы запустить игру, воспользуйтесь бинарником в директории bin/:
./bin/app --mode geom-progression
Для того, чтобы запустить код с исходников, воспользуйтесь Makefile .phony:
make lcm
- Игра "Геометрическая прогрессия":
make geom-progression
Requirements
golang 1.23.0+
Задание
- Создание приветствия. Поприветствуйте пользователя в игре. Спросите у пользователя его имя и поприветствуйте его по имени: Welcome to the Brain Games! May I have your name? John Hello, John!
Код, реализующий этот функционал, должен быть в отдельном файле src/cli.* относительно директории проекта, а в исполняемом файле bin/brain-games.* сделайте вызов. Для этого код нужно поместить в функцию и импортировать ее в исполняемый файл.
-
Настройка линтера. (Доп.задание лучше сделать, описание приведено только для JS, если у вас другой язык, посмотрите, как это сделать)
-
Установите следующие пакеты: eslint, eslint-config-airbnb-base, eslint-plugin-import 2. Настройте правильно .eslintrc.yml. Документация: https://eslint.org/docs/user-guide/configuring. Сверяйтесь с nodejs-package
-
Создайте задачу make lint, которая должна запускать npx eslint .
-
Подключите eslint к своему редактору, убедитесь что все работает. Скорее всего, понадобится поставить eslint глобально
-
Исправьте все ошибки, которые выдает линтер. Отключите правила no-console (оно не актуально для nodejs разработки) и import/extensions (чтобы получить возможность указывать при импорте файлы с расширением)
-
Игра "НОК" Необходимо реализовать игру "наименьшее общее кратное (НОК)". Суть игры в следующем: пользователю показывается три случайных числа, например, 5 7 15. Пользователь должен вычислить и ввести наименьшее общее кратное этих чисел.
Вывод должен получиться следующий:
the smallest common multiple
!
, !
В случае, если пользователь даст неверный ответ, необходимо вывести:
- Игра "Геометическая прогрессия" Показываем игроку ряд чисел, образующий геометрическую прогрессию, заменив любое из чисел двумя точками. Игрок должен определить это число. • Рекомендуемая длина прогрессии – 10 чисел. Длина может генерироваться случайным образом, но должна содержать не менее 5
чисел • Позиция спрятанного элемента каждый раз изменяется (выбирается случайным образом)
Пример:
Question: 1 2 4 8 .. 32 64 128
!
, !
В случае, если пользователь даст неверный ответ, необходимо вывести:
Задачи
-
Реализуйте необходимую логику для работы игры.
-
Проверьте работоспособность новой игры. 3. Добавьте в README.md аскинему (https://asciinema.org/) с запуском и демонстрацией различных исходов игры (дополнительное задание за доп.баллы). 4. Подключите к проекту сервис по проверке качества кода: www.CodeClimate.com.
Разместите значок Maintainability в файле readme вашего репозитория.
- На данном этапе можно заметить, что игры имеют общий порядок выполнения (задать вопрос, получить ответ, сравнить ответ и т.д.). Эту логику можно вынести в одно место и переиспользовать внутри конкретных игр для устранения дублирования кода. С введением второй игры у вас появляется общая для всех игр логика (Эту логику можно поместить в отдельный файл). Главная задача этого шага – построить архитектуру запуска игр так, чтобы эта логика была в одном месте и управляла играми. Правильная организация файловой структуры хорошо помогает понимать структуру проекта. Хорошим решением будет положить все игры (и только игры) в директорию games. Максимальное количество раундов одинаково для всех игр и должно быть равно трём.
Главное в этом задании выполнить рефакторинг, в результате которого общая логика будет находиться в одном файле, очень хорошо, если реализуете движок для игр, в который будете передавать функции, с уникальным кодом для каждой игры, запуская их в движке. Все функции с побочными эффектами лучше оставить в файлах с играми и не писать их в движке.