sergkul/project-lvl1-s316

View on GitHub
src/games/calc.js

Summary

Maintainability
B
5 hrs
Test Coverage
import readlineSync from 'readline-sync';

const randomNumber = limit => Math.floor(Math.random() * limit);

const rounds = 3;

const calcGame = () => {
  let question = '';
  let trueAnswer = 0;
  const operationsAmount = 3;

  for (let i = 1; i <= rounds; i += 1) {
    const num1 = randomNumber(100);
    const num2 = randomNumber(100);
    const operationIndex = randomNumber(operationsAmount);

    switch (operationIndex) {
      case 0:
        question = `${num1} + ${num2}`;
        trueAnswer = num1 + num2;
        break;
      case 1:
        question = `${num1} - ${num2}`;
        trueAnswer = num1 - num2;
        break;
      case 2:
        question = `${num1} * ${num2}`;
        trueAnswer = num1 * num2;
        break;
      default:
        break;
    }

    trueAnswer = String(trueAnswer);

    console.log(`Question: ${question}`);

    const answer = readlineSync.question('Your answer: ');

    if (answer !== trueAnswer) {
      console.log(`${answer} is wrong answer ;(. Correct answer was ${trueAnswer}.`);
      return false;
    }

    console.log('Correct');
  }

  return true;
};

const startBrainCalcGame = () => {
  console.log('Welcome to the Brain Games!');
  console.log('What is the result of the expression?\n');

  const username = readlineSync.question('May I have your name? ');

  console.log(`Hello, ${username}!\n`);

  if (calcGame()) {
    console.log(`Congratulations, ${username}!`);
  } else {
    console.log(`Let's try again, ${username}!`);
  }
};

export default startBrainCalcGame;