ustiuzhanin/frontend-project-lvl1

View on GitHub
src/index.js

Summary

Maintainability
A
1 hr
Test Coverage
import readlineSync from 'readline-sync';
import { decorate } from './utils';

const roundsCount = 3;

const playGame = (runGame, gameDescription) => {
  console.log(`${decorate('Welcome to the Brain Games!', 'blue')}`);
  console.log(`${gameDescription}\n`);

  const name = readlineSync.question('May I have your name? ', {
    defaultInput: 'Anonymous',
  });
  console.log(`Hello, ${decorate(name, 'blue')}!\n`);

  const launchRound = (counter) => {
    if (counter === roundsCount) {
      console.log(`${decorate(`Congratulations, ${name}!`, 'blue')}`);
      return;
    }

    const { rightAnswer, question } = runGame();

    console.log(`Question: ${question}`);
    const answer = readlineSync.question('Your answer: ');

    if (rightAnswer !== answer) {
      const wrongAnswerMessage = `${decorate(
        `"${answer}"`,
        'red',
      )} is wrong answer ;(. Correct answer was ${decorate(
        `"${rightAnswer}"`,
        'green',
      )}.\n`;
      const tryAgainMessage = `Let's try again, ${decorate(name, 'blue')}!`;

      console.log(wrongAnswerMessage);
      console.log(tryAgainMessage);
      return;
    }

    console.log(`${decorate('Correct!', 'green')}`);

    launchRound(counter + 1);
  };

  launchRound(0);
};

export default playGame;