Skip to content

Commit 8af9d3e

Browse files
committed
add brain-calc.js and fix minor problens
1 parent 29ceb7b commit 8af9d3e

File tree

5 files changed

+70
-5
lines changed

5 files changed

+70
-5
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ brain-games:
88
node bin/brain-games.js
99
brain-even:
1010
node bin/brain-even.js
11+
brain-calc:
12+
node bin/brain-calc.js
13+
1114

1215
lint:
1316
npx eslint .

bin/brain-calc.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 { playGameCalc } from '../games/brain-calc.js';
3+
4+
// Запускаем игру
5+
playGameCalc();

games/brain-calc.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, getRandomNumber, getRandomOperator, getResult, handleAnswer } from '../index.js';
3+
//brain-calc
4+
export const playGameCalc = () => {
5+
//Приветствуем
6+
const userName = greeting();
7+
// Поясняем смысл
8+
console.log('What is the result of the expression?');
9+
// Цикл игры
10+
let correctAnswersCount = 0;
11+
while (correctAnswersCount < 3) {
12+
//Получаем пример
13+
const randomNumber1 = getRandomNumber();
14+
const randomNumber2 = getRandomNumber();
15+
const randomOperator = getRandomOperator();
16+
const example = `${randomNumber1} ${randomOperator} ${randomNumber2}`;
17+
console.log(`Question: ${example}`);
18+
// Получаем ответ пользователя
19+
const userAnswer = readlineSync.question('Your answer: ');
20+
//Вычисляем ответ
21+
const correctAnswer = String(getResult(randomNumber1, randomOperator, randomNumber2));
22+
// Сверяем результаты
23+
const incorrectMessage = `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`
24+
const result = handleAnswer(userAnswer, correctAnswer, userName, correctAnswersCount, incorrectMessage);
25+
correctAnswersCount = result.correctAnswersCount;
26+
// Закрываем цикл
27+
if (result.finished) {
28+
break;
29+
}
30+
}
31+
};
32+

games/brain-even.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import readlineSync from 'readline-sync';
22
import { greeting, getRandomNumber, checkEvenness, handleAnswer } from '../index.js';
33
// brain-even
44
export const playGameEven = () => {
5+
//Приветствуем
56
const userName = greeting();
6-
let correctAnswersCount = 0;
77
// Поясняем смысл
88
console.log('Answer "yes" if the number is even, otherwise answer "no".');
99
// Цикл игры
10+
let correctAnswersCount = 0;
1011
while (correctAnswersCount < 3) {
1112
// Получаем число
1213
const number = getRandomNumber();
@@ -16,11 +17,13 @@ export const playGameEven = () => {
1617
// Проверяем четность
1718
const correctAnswer = checkEvenness(number);
1819
// Сверяем результаты
19-
const result = handleAnswer(userAnswer, correctAnswer, userName, correctAnswersCount);
20+
const incorrectMessage = `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`
21+
const result = handleAnswer(userAnswer, correctAnswer, userName, correctAnswersCount, incorrectMessage);
2022
correctAnswersCount = result.correctAnswersCount;
2123
// Закрываем цикл
2224
if (result.finished) {
2325
break;
2426
}
2527
}
26-
};
28+
};
29+

index.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export const checkEvenness = (number) => {
2020
};
2121

2222
// Функция подсчета ответов
23-
export const handleAnswer = (userAnswer, correctAnswer, userName, correctAnswersCount) => {
23+
export const handleAnswer = (userAnswer, correctAnswer, userName, correctAnswersCount, incorrectMessage) => {
2424
// Сравниваем ответы
2525
if (userAnswer === correctAnswer) {
2626
console.log('Correct!');
@@ -32,11 +32,33 @@ export const handleAnswer = (userAnswer, correctAnswer, userName, correctAnswers
3232
return { correctAnswersCount, finished: true };
3333
}
3434
} else {
35-
console.log(`Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`);
35+
console.log(incorrectMessage);
3636
// Завершение игры при неправильном ответе
3737
return { correctAnswersCount, finished: true };
3838
}
3939
// Игра продолжается
4040
return { correctAnswersCount, finished: false };
4141
};
4242

43+
44+
// Функция для генерации случайного математического оператора
45+
export const getRandomOperator = () => {
46+
const operators = ['+', '-', '*'];
47+
const randomIndex = Math.floor(Math.random() * operators.length);
48+
const randomOperator = operators[randomIndex];
49+
return randomOperator;
50+
};
51+
52+
// Функция вычисления результата
53+
export const getResult = (num1, operator, num2) => {
54+
switch (operator) {
55+
case '+':
56+
return num1 + num2;
57+
case '-':
58+
return num1 - num2;
59+
case '*':
60+
return num1 * num2;
61+
}
62+
};
63+
64+

0 commit comments

Comments
 (0)