Skip to content

Commit 6a9ff52

Browse files
committed
do better
1 parent ade55af commit 6a9ff52

File tree

7 files changed

+102
-127
lines changed

7 files changed

+102
-127
lines changed

index.js

Lines changed: 0 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -8,105 +8,3 @@ export const greeting = () => {
88
return userName;
99
};
1010

11-
// Функция для генерации случайного числа от 1 до 100
12-
export const getRandomNumber = () => Math.floor(Math.random() * 100) + 1;
13-
14-
// Функция для проверки четности, 'yes' если четное, иначе 'no'
15-
export const checkEvenness = (number) => (number % 2 === 0 ? 'yes' : 'no');
16-
17-
// Функция подсчета ответов
18-
export const handleAnswer = (
19-
userAnswer,
20-
correctAnswer,
21-
userName,
22-
correctAnswersCount,
23-
incorrectMessage,
24-
) => {
25-
let updatedCorrectAnswersCount = correctAnswersCount;
26-
// Сравниваем ответы
27-
if (userAnswer === correctAnswer) {
28-
console.log('Correct!');
29-
updatedCorrectAnswersCount += 1;
30-
if (updatedCorrectAnswersCount === 3) {
31-
// Завершение игры при достижении 3
32-
console.log(`Congratulations, ${userName}!`);
33-
return { correctAnswersCount: updatedCorrectAnswersCount, finished: true };
34-
}
35-
} else {
36-
// Завершение игры при неправильном ответе
37-
console.log(incorrectMessage);
38-
return { correctAnswersCount: updatedCorrectAnswersCount, finished: true };
39-
}
40-
// Игра продолжается
41-
return { correctAnswersCount: updatedCorrectAnswersCount, finished: false };
42-
};
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-
const firstNumber = num1;
55-
const secondNumber = num2;
56-
// Определяем значение оператора
57-
switch (operator) {
58-
case '+':
59-
return firstNumber + secondNumber;
60-
case '-':
61-
return firstNumber - secondNumber;
62-
case '*':
63-
return firstNumber * secondNumber;
64-
default:
65-
return null; // Возвращаем null для нераспознанного оператора
66-
}
67-
};
68-
69-
// Функция вычисления НОД
70-
export const gcd = (a, b) => {
71-
let num1 = a;
72-
let num2 = b;
73-
// Алгоритм Евклида
74-
while (num2 !== 0) {
75-
const temp = num2;
76-
num2 = num1 % num2;
77-
num1 = temp;
78-
}
79-
return num1;
80-
};
81-
82-
// Функция генерации массива арифметической прогрессии
83-
export const generateRandomArray = () => {
84-
// Определяем начало и шаг
85-
const start = Math.floor(Math.random() * 100) + 1;
86-
const step = Math.floor(Math.random() * 10) + 1;
87-
// Создаем массив
88-
const array = [];
89-
// Заполняем массив 10 числами
90-
for (let i = 0; i < 10; i += 1) {
91-
array.push(start + (i * step));
92-
}
93-
return array;
94-
};
95-
96-
// Функция для изменнения значения в массиве
97-
export const replaceValueInArray = (arr, old, nw) => arr.map((item) => (item === old ? nw : item));
98-
99-
// Функция проверки простого числа
100-
export const isPrime = (num) => {
101-
// Проверка на числа меньше 2
102-
if (num <= 1) {
103-
return 'no';
104-
}
105-
// Проверка делителей от 2 до квадратного корня из n
106-
for (let i = 2; i <= Math.sqrt(num); i += 1) {
107-
if (num % i === 0) {
108-
return 'no';
109-
}
110-
}
111-
return 'yes';
112-
};

src/gameUtils.js

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,38 @@
11
import readlineSync from 'readline-sync';
2-
import { greeting, handleAnswer } from '../index.js';
2+
import { greeting } from '../index.js';
33

44
const playGame = (gameDescription, generateQuestion, generateIncorrectMessage) => {
55
// Приветсвие и описание
66
const userName = greeting();
77
console.log(gameDescription);
88
// Начало игры
9-
let correctAnswersCount = 0;
10-
while (correctAnswersCount < 3) {
9+
for (let correctAnswersCount = 0; correctAnswersCount < 3; ) {
1110
// Формируем вопрос
1211
const { question, correctAnswer } = generateQuestion();
1312
console.log(`Question: ${question}`);
1413
// Получаем ответ
1514
const userAnswer = readlineSync.question('Your answer: ');
1615
// Сверяем результаты
1716
const incorrectMessage = generateIncorrectMessage(userAnswer, String(correctAnswer), userName);
18-
const result = handleAnswer(
19-
userAnswer,
20-
String(correctAnswer),
21-
userName,
22-
correctAnswersCount,
23-
incorrectMessage,
24-
);
25-
// Проверяем, правильный ли ответ
26-
correctAnswersCount = result.correctAnswersCount;
27-
28-
// Завершаем игру
29-
if (result.finished) {
17+
// Функция подсчета ответов
18+
let updatedCorrectAnswersCount = correctAnswersCount;
19+
// Сравниваем ответы
20+
if (userAnswer === String(correctAnswer)) {
21+
console.log('Correct!');
22+
updatedCorrectAnswersCount += 1;
23+
if (updatedCorrectAnswersCount === 3) {
24+
// Завершение игры при достижении 3
25+
console.log(`Congratulations, ${userName}!`);
26+
break;
27+
}
28+
} else {
29+
// Завершение игры при неправильном ответе
30+
console.log(incorrectMessage);
3031
break;
3132
}
33+
// Обновляем счетчик правильных ответов
34+
correctAnswersCount = updatedCorrectAnswersCount;
3235
}
3336
};
3437

35-
export default playGame;
38+
export default playGame;

src/games/brain-calc.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
1-
import { getRandomNumber, getRandomOperator, getResult } from '../../index.js';
21
import playGame from '../gameUtils.js';
2+
import getRandomNumber from '../utils.js';
3+
4+
// Функция для генерации случайного математического оператора
5+
const getRandomOperator = () => {
6+
const operators = ['+', '-', '*'];
7+
const randomIndex = Math.floor(Math.random() * operators.length);
8+
const randomOperator = operators[randomIndex];
9+
return randomOperator;
10+
};
11+
12+
// Функция вычисления результата математической операции
13+
const getResult = (num1, operator, num2) => {
14+
const firstNumber = num1;
15+
const secondNumber = num2;
16+
// Определяем значение оператора
17+
switch (operator) {
18+
case '+':
19+
return firstNumber + secondNumber;
20+
case '-':
21+
return firstNumber - secondNumber;
22+
case '*':
23+
return firstNumber * secondNumber;
24+
default:
25+
return null; // Возвращаем null для нераспознанного оператора
26+
}
27+
};
328

429
// Задаем вопрос
530
const generateQuestion = () => {

src/games/brain-even.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
import { getRandomNumber, checkEvenness } from '../../index.js';
21
import playGame from '../gameUtils.js';
2+
import getRandomNumber from '../utils.js';
3+
4+
5+
// Функция для проверки четности, 'yes' если четное, иначе 'no'
6+
const isEvenness = (number) => (number % 2 === 0 ? 'yes' : 'no');
37

48
// Задаем вопрос
59
const generateQuestion = () => {
610
const number = getRandomNumber();
7-
const correctAnswer = checkEvenness(number);
11+
const correctAnswer = isEvenness(number);
812
return { question: number, correctAnswer };
913
};
1014

src/games/brain-gcd.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
1-
import { getRandomNumber, gcd } from '../../index.js';
21
import playGame from '../gameUtils.js';
2+
import getRandomNumber from '../utils.js';
3+
4+
// Функция вычисления НОД
5+
const gcd = (a, b) => {
6+
let num1 = a;
7+
let num2 = b;
8+
// Алгоритм Евклида
9+
while (num2 !== 0) {
10+
const temp = num2;
11+
num2 = num1 % num2;
12+
num1 = temp;
13+
}
14+
return num1;
15+
};
316

417
// Задаем вопрос
518
const generateQuestion = () => {
@@ -13,7 +26,7 @@ const generateQuestion = () => {
1326
// Задаем сообшения
1427
const gameDescription = 'Find the greatest common divisor of given numbers.';
1528

16-
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
29+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`;
1730

1831
// Запускаем игру
1932
const playGameGcd = () => {

src/games/brain-prime.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
1-
import { getRandomNumber, isPrime } from '../../index.js';
21
import playGame from '../gameUtils.js';
2+
import getRandomNumber from '../utils.js';
3+
4+
5+
// Функция проверки простого числа
6+
const isPrime = (num) => {
7+
// Проверка на числа меньше 2
8+
if (num <= 1) {
9+
return 'no';
10+
}
11+
// Проверка делителей от 2 до квадратного корня из n
12+
for (let i = 2; i <= Math.sqrt(num); i += 1) {
13+
if (num % i === 0) {
14+
return 'no';
15+
}
16+
}
17+
return 'yes';
18+
};
319

420
// Задаем вопрос
521
const generateQuestion = () => {
@@ -11,7 +27,7 @@ const generateQuestion = () => {
1127
// Задаем сообшения
1228
const gameDescription = 'Answer "yes" if given number is prime. Otherwise answer "no".';
1329

14-
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
30+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is prime, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
1531

1632
// Запускаем игру
1733
const playGamePrime = () => {

src/games/brain-progression.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
1-
import { generateRandomArray, replaceValueInArray } from '../../index.js';
21
import playGame from '../gameUtils.js';
32

3+
// Функция генерации массива арифметической прогрессии
4+
const generateRandomArray = () => {
5+
// Определяем начало и шаг
6+
const start = Math.floor(Math.random() * 100) + 1;
7+
const step = Math.floor(Math.random() * 10) + 1;
8+
// Создаем массив
9+
const array = [];
10+
// Заполняем массив 10 числами
11+
for (let i = 0; i < 10; i += 1) {
12+
array.push(start + (i * step));
13+
}
14+
return array;
15+
};
16+
17+
// Функция для изменнения значения в массиве
18+
const replaceValueInArray = (arr, old, nw) => arr.map((item) => (item === old ? nw : item));
19+
420
// Задаем вопрос
521
const generateQuestion = () => {
622
const array = generateRandomArray();
@@ -13,7 +29,7 @@ const generateQuestion = () => {
1329
// Задаем сообшения
1430
const gameDescription = 'What number is missing in the progression?';
1531

16-
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
32+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`;
1733

1834
// Запускаем игру
1935
const playGameProgression = () => {

0 commit comments

Comments
 (0)