Skip to content

Commit 2d288da

Browse files
committed
add brain-progression game
1 parent ac01251 commit 2d288da

File tree

5 files changed

+64
-8
lines changed

5 files changed

+64
-8
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ brain-calc:
1212
node bin/brain-calc.js
1313
brain-gcd:
1414
node bin/brain-gcd.js
15+
brain-progression:
16+
node bin/brain-progression.js
1517

1618

1719
lint:

bin/brain-progression.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env node
2+
import { playGameProgression } from '../games/brain-progression.js';
3+
4+
// Запускаем игру
5+
playGameProgression();

games/brain-progression.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import readlineSync from 'readline-sync';
2+
import { greeting, generateRandomArray, replaceValueInArray, handleAnswer } from '../index.js';
3+
// brain-even
4+
export const playGameProgression = () => {
5+
//Приветствуем
6+
const userName = greeting();
7+
// Поясняем смысл
8+
console.log('Find the greatest common divisor of given numbers.');
9+
// Цикл игры
10+
let correctAnswersCount = 0;
11+
while (correctAnswersCount < 3) {
12+
// Получаем массив
13+
const array = generateRandomArray();
14+
// Определяем скрываемое число
15+
const randomIndex = Math.floor(Math.random() * array.length);
16+
const correctAnswer = array[randomIndex];
17+
const arrayHidden = replaceValueInArray(array, correctAnswer, "..")
18+
console.log(`Question: ${arrayHidden}`);
19+
// Получаем ответ пользователя
20+
const userAnswer = readlineSync.question('Your answer: ');
21+
// Проверяем четность
22+
const correctAnswerString = String(correctAnswer);
23+
// Сверяем результаты
24+
const incorrectMessage = `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`;
25+
const result = handleAnswer(userAnswer, correctAnswerString, userName, correctAnswersCount, incorrectMessage);
26+
correctAnswersCount = result.correctAnswersCount;
27+
// Закрываем цикл
28+
if (result.finished) {
29+
break;
30+
}
31+
}
32+
};

index.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ export const greeting = () => {
1111
// Функция для генерации случайного числа от 1 до 100
1212
export const getRandomNumber = () => Math.floor(Math.random() * 100) + 1;
1313

14-
// Функция для проверки четности
15-
export const checkEvenness = (number) =>
16-
// Возвращаем 'yes', если четное, иначе 'no'
17-
(number % 2 === 0 ? 'yes' : 'no')
18-
;
14+
// Функция для проверки четности, 'yes' если четное, иначе 'no'
15+
export const checkEvenness = (number) => number % 2 === 0 ? 'yes' : 'no';
1916

2017
// Функция подсчета ответов
2118
export const handleAnswer = (userAnswer, correctAnswer, userName, correctAnswersCount, incorrectMessage) => {
@@ -45,7 +42,7 @@ export const getRandomOperator = () => {
4542
return randomOperator;
4643
};
4744

48-
// Функция вычисления результата
45+
// Функция вычисления результата математической операции
4946
export const getResult = (num1, operator, num2) => {
5047
//Определяем значение оператора
5148
switch (operator) {
@@ -58,7 +55,7 @@ export const getResult = (num1, operator, num2) => {
5855
}
5956
};
6057

61-
//Функция вычисления НОД
58+
// Функция вычисления НОД
6259
export const gcd = (num1, num2) => {
6360
//Алгоритм Евклида
6461
while (num2 !== 0) {
@@ -68,3 +65,22 @@ export const gcd = (num1, num2) => {
6865
}
6966
return num1;
7067
};
68+
69+
// Функция генерации массива арифметической прогрессии
70+
export const generateRandomArray = () => {
71+
// Определяем начало и шаг
72+
const start = Math.floor(Math.random() * 100) + 1;
73+
const step = Math.floor(Math.random() * 10) + 1;
74+
// Создаем массив
75+
const array = [];
76+
// Заполняем массив 10 числами
77+
for (let i = 0; i < 10; i++) {
78+
array.push(start + (i * step));
79+
}
80+
return array;
81+
};
82+
83+
// Функция для изменнения значения в массиве
84+
export const replaceValueInArray = (array, oldValue, newValue) => {
85+
return array.map(item => item === oldValue ? newValue : item)
86+
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"brain-games": "bin/brain-games.js",
88
"brain-even": "bin/brain-even.js",
99
"brain-calc": "bin/brain-calc.js",
10-
"brain-gcd": "bin/brain-gcd.js"
10+
"brain-gcd": "bin/brain-gcd.js",
11+
"brain-progression": "bin/brain-progression.js"
1112
},
1213
"main": "index.js",
1314
"scripts": {

0 commit comments

Comments
 (0)