Skip to content

Commit 1080edb

Browse files
committed
fix logic
1 parent 6beee83 commit 1080edb

File tree

6 files changed

+122
-178
lines changed

6 files changed

+122
-178
lines changed

src/gameUtils.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import readlineSync from 'readline-sync';
2+
import { greeting, handleAnswer } from '../index.js';
3+
4+
const playGame = (gameDescription, generateQuestion, generateIncorrectMessage) => {
5+
// Приветсвие и описание
6+
const userName = greeting();
7+
console.log(gameDescription);
8+
// Начало игры
9+
let correctAnswersCount = 0;
10+
while (correctAnswersCount < 3) {
11+
// Формируем вопрос
12+
const { question, correctAnswer } = generateQuestion();
13+
console.log(`Question: ${question}`);
14+
// Получаем ответ
15+
const userAnswer = readlineSync.question('Your answer: ');
16+
// Сверяем результаты
17+
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) {
30+
break;
31+
}
32+
}
33+
};
34+
35+
export default playGame;

src/games/brain-calc.js

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,24 @@
1-
import readlineSync from 'readline-sync';
2-
import {
3-
greeting, getRandomNumber, getRandomOperator, getResult, handleAnswer,
4-
} from '../../index.js';
1+
import { getRandomNumber, getRandomOperator, getResult } from '../../index.js';
2+
import playGame from '../gameUtils.js';
53

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

4224
export default playGameCalc;

src/games/brain-even.js

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,21 @@
1-
import readlineSync from 'readline-sync';
2-
import {
3-
greeting, getRandomNumber, checkEvenness, handleAnswer,
4-
} from '../../index.js';
1+
import { getRandomNumber, checkEvenness } from '../../index.js';
2+
import playGame from '../gameUtils.js';
53

6-
// brain-even
4+
// Задаем вопрос
5+
const generateQuestion = () => {
6+
const number = getRandomNumber();
7+
const correctAnswer = checkEvenness(number);
8+
return { question: number, correctAnswer };
9+
};
10+
11+
// Задаем сообшения
12+
const gameDescription = 'Answer "yes" if the number is even, otherwise answer "no".';
13+
14+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
15+
16+
// Запускаем игру
717
const playGameEven = () => {
8-
// Приветствуем
9-
const userName = greeting();
10-
// Поясняем смысл
11-
console.log('Answer "yes" if the number is even, otherwise answer "no".');
12-
// Цикл игры
13-
let correctAnswersCount = 0;
14-
while (correctAnswersCount < 3) {
15-
// Получаем число
16-
const number = getRandomNumber();
17-
console.log(`Question: ${number}`);
18-
// Получаем ответ пользователя
19-
const userAnswer = readlineSync.question('Your answer: ');
20-
// Проверяем четность
21-
const correctAnswer = String(checkEvenness(number));
22-
// Сверяем результаты
23-
const incorrectMessage = `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
24-
const result = handleAnswer(
25-
userAnswer,
26-
correctAnswer,
27-
userName,
28-
correctAnswersCount,
29-
incorrectMessage,
30-
);
31-
correctAnswersCount = result.correctAnswersCount;
32-
// Закрываем цикл
33-
if (result.finished) {
34-
break;
35-
}
36-
}
18+
playGame(gameDescription, generateQuestion, generateIncorrectMessageEvenOdd);
3719
};
3820

3921
export default playGameEven;

src/games/brain-gcd.js

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,23 @@
1-
import readlineSync from 'readline-sync';
2-
import {
3-
greeting, getRandomNumber, gcd, handleAnswer,
4-
} from '../../index.js';
1+
import { getRandomNumber, gcd } from '../../index.js';
2+
import playGame from '../gameUtils.js';
53

6-
// brain-even
4+
// Задаем вопрос
5+
const generateQuestion = () => {
6+
const randomNumber1 = getRandomNumber();
7+
const randomNumber2 = getRandomNumber();
8+
const example = `${randomNumber1} ${randomNumber2}`;
9+
const correctAnswer = gcd(randomNumber1, randomNumber2);
10+
return { question: example, correctAnswer };
11+
};
12+
13+
// Задаем сообшения
14+
const gameDescription = 'Find the greatest common divisor of given numbers.';
15+
16+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
17+
18+
// Запускаем игру
719
const playGameGcd = () => {
8-
// Приветствуем
9-
const userName = greeting();
10-
// Поясняем смысл
11-
console.log('Find the greatest common divisor of given numbers.');
12-
// Цикл игры
13-
let correctAnswersCount = 0;
14-
while (correctAnswersCount < 3) {
15-
// Получаем число
16-
const randomNumber1 = getRandomNumber();
17-
const randomNumber2 = getRandomNumber();
18-
console.log(`Question: ${randomNumber1} ${randomNumber2}`);
19-
// Получаем ответ пользователя
20-
const userAnswer = readlineSync.question('Your answer: ');
21-
// Проверяем четность
22-
const correctAnswer = String(gcd(randomNumber1, randomNumber2));
23-
// Сверяем результаты
24-
const incorrectMessage = `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`;
25-
const result = handleAnswer(
26-
userAnswer,
27-
correctAnswer,
28-
userName,
29-
correctAnswersCount,
30-
incorrectMessage,
31-
);
32-
correctAnswersCount = result.correctAnswersCount;
33-
// Закрываем цикл
34-
if (result.finished) {
35-
break;
36-
}
37-
}
20+
playGame(gameDescription, generateQuestion, generateIncorrectMessageEvenOdd);
3821
};
3922

4023
export default playGameGcd;

src/games/brain-prime.js

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,21 @@
1-
import readlineSync from 'readline-sync';
2-
import {
3-
greeting, getRandomNumber, isPrime, handleAnswer,
4-
} from '../../index.js';
1+
import { getRandomNumber, isPrime } from '../../index.js';
2+
import playGame from '../gameUtils.js';
53

6-
// brain-even
4+
// Задаем вопрос
5+
const generateQuestion = () => {
6+
const number = getRandomNumber();
7+
const correctAnswer = isPrime(number);
8+
return { question: number, correctAnswer };
9+
};
10+
11+
// Задаем сообшения
12+
const gameDescription = 'Answer "yes" if given number is prime. Otherwise answer "no".';
13+
14+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
15+
16+
// Запускаем игру
717
const playGamePrime = () => {
8-
// Приветствуем
9-
const userName = greeting();
10-
// Поясняем смысл
11-
console.log('Answer "yes" if given number is prime. Otherwise answer "no".');
12-
// Цикл игры
13-
let correctAnswersCount = 0;
14-
while (correctAnswersCount < 3) {
15-
// Получаем число
16-
const number = getRandomNumber();
17-
console.log(`Question: ${number}`);
18-
// Получаем ответ пользователя
19-
const userAnswer = readlineSync.question('Your answer: ');
20-
// Проверяем простое ли число
21-
const correctAnswer = isPrime(number);
22-
// Сверяем результаты
23-
const incorrectMessage = `Answer "${userAnswer}" if given number is prime, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
24-
const result = handleAnswer(
25-
userAnswer,
26-
correctAnswer,
27-
userName,
28-
correctAnswersCount,
29-
incorrectMessage,
30-
);
31-
correctAnswersCount = result.correctAnswersCount;
32-
// Закрываем цикл
33-
if (result.finished) {
34-
break;
35-
}
36-
}
18+
playGame(gameDescription, generateQuestion, generateIncorrectMessageEvenOdd);
3719
};
3820

3921
export default playGamePrime;

src/games/brain-progression.js

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,23 @@
1-
import readlineSync from 'readline-sync';
2-
import {
3-
greeting, generateRandomArray, replaceValueInArray, handleAnswer,
4-
} from '../../index.js';
1+
import { generateRandomArray, replaceValueInArray } from '../../index.js';
2+
import playGame from '../gameUtils.js';
53

6-
// brain-even
4+
// Задаем вопрос
5+
const generateQuestion = () => {
6+
const array = generateRandomArray();
7+
const randomIndex = Math.floor(Math.random() * array.length);
8+
const correctAnswer = array[randomIndex];
9+
const arrayHidden = replaceValueInArray(array, correctAnswer, '..').join(' ');
10+
return { question: arrayHidden, correctAnswer };
11+
};
12+
13+
// Задаем сообшения
14+
const gameDescription = 'What number is missing in the progression?';
15+
16+
const generateIncorrectMessageEvenOdd = (userAnswer, correctAnswer, userName) => `Answer "${userAnswer}" if the number is even, otherwise answer "${correctAnswer}".\nLet's try again, ${userName}!`;
17+
18+
// Запускаем игру
719
const playGameProgression = () => {
8-
// Приветствуем
9-
const userName = greeting();
10-
// Поясняем смысл
11-
console.log('What number is missing in the progression?');
12-
// Цикл игры
13-
let correctAnswersCount = 0;
14-
while (correctAnswersCount < 3) {
15-
// Получаем массив
16-
const array = generateRandomArray();
17-
// Определяем скрываемое число
18-
const randomIndex = Math.floor(Math.random() * array.length);
19-
const correctAnswer = array[randomIndex];
20-
const arrayHidden = replaceValueInArray(array, correctAnswer, '..');
21-
console.log(`Question: ${arrayHidden.join(' ')}`);
22-
// Получаем ответ пользователя
23-
const userAnswer = readlineSync.question('Your answer: ');
24-
// Проверяем четность
25-
const correctAnswerString = String(correctAnswer);
26-
// Сверяем результаты
27-
const incorrectMessage = `'${userAnswer}' is wrong answer ;(. Correct answer was '${correctAnswer}'.\nLet's try again, ${userName}!`;
28-
const result = handleAnswer(
29-
userAnswer,
30-
correctAnswerString,
31-
userName,
32-
correctAnswersCount,
33-
incorrectMessage,
34-
);
35-
correctAnswersCount = result.correctAnswersCount;
36-
// Закрываем цикл
37-
if (result.finished) {
38-
break;
39-
}
40-
}
20+
playGame(gameDescription, generateQuestion, generateIncorrectMessageEvenOdd);
4121
};
4222

4323
export default playGameProgression;

0 commit comments

Comments
 (0)