UNPKG

brain-games-irastypain

Version:

This package is implementation of first project at Hexlet

79 lines (61 loc) 6.35 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.welcome = exports.runGame = exports.greeting = exports.askUserName = undefined; var _readlineSync = require('readline-sync'); var _readlineSync2 = _interopRequireDefault(_readlineSync); var _qa = require('./lib/qa'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var askUserName = function askUserName() { return _readlineSync2.default.question('May I have your name? '); }; var askAnswer = function askAnswer() { return _readlineSync2.default.question('Your answer: '); }; var welcome = 'Welcome to the Brain Games!'; var greeting = function greeting(userName) { return 'Hello, ' + userName + '!'; }; var losing = function losing(userName) { return 'Let\'s try again, ' + userName + '!'; }; var congratulate = function congratulate(userName) { return 'Congratulations, ' + userName + '!'; }; var runGame = function runGame(description, generateQA) { console.log(welcome); console.log(description + '\n'); var userName = askUserName(); console.log(greeting(userName)); var playGame = function playGame() { var countRounds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3; var newRound = function newRound(passedRounds) { if (passedRounds === countRounds) { return true; } var qa = generateQA(); console.log('\nQuestion: ' + (0, _qa.getQuestion)(qa)); var answer = askAnswer(); var correctAnswer = (0, _qa.getAnswer)(qa); if (correctAnswer === answer) { console.log('Correct!'); return newRound(passedRounds + 1); } console.log('\'' + answer + '\' is wrong answer ;(. Correct answer was \'' + correctAnswer + '\'.'); return false; }; return newRound(0); }; var userWon = playGame(); if (userWon) { console.log('\n' + congratulate(userName)); } else { console.log('\n' + losing(userName)); } }; exports.askUserName = askUserName; exports.greeting = greeting; exports.runGame = runGame; exports.welcome = welcome; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJhc2tVc2VyTmFtZSIsInF1ZXN0aW9uIiwiYXNrQW5zd2VyIiwid2VsY29tZSIsImdyZWV0aW5nIiwidXNlck5hbWUiLCJsb3NpbmciLCJjb25ncmF0dWxhdGUiLCJydW5HYW1lIiwiZGVzY3JpcHRpb24iLCJnZW5lcmF0ZVFBIiwiY29uc29sZSIsImxvZyIsInBsYXlHYW1lIiwiY291bnRSb3VuZHMiLCJuZXdSb3VuZCIsInBhc3NlZFJvdW5kcyIsInFhIiwiYW5zd2VyIiwiY29ycmVjdEFuc3dlciIsInVzZXJXb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUEsSUFBTUEsY0FBYyxTQUFkQSxXQUFjO0FBQUEsU0FBTSx1QkFBYUMsUUFBYixDQUFzQix3QkFBdEIsQ0FBTjtBQUFBLENBQXBCO0FBQ0EsSUFBTUMsWUFBWSxTQUFaQSxTQUFZO0FBQUEsU0FBTSx1QkFBYUQsUUFBYixDQUFzQixlQUF0QixDQUFOO0FBQUEsQ0FBbEI7O0FBRUEsSUFBTUUsVUFBVSw2QkFBaEI7QUFDQSxJQUFNQyxXQUFXLFNBQVhBLFFBQVc7QUFBQSxxQkFBc0JDLFFBQXRCO0FBQUEsQ0FBakI7QUFDQSxJQUFNQyxTQUFTLFNBQVRBLE1BQVM7QUFBQSxnQ0FBZ0NELFFBQWhDO0FBQUEsQ0FBZjtBQUNBLElBQU1FLGVBQWUsU0FBZkEsWUFBZTtBQUFBLCtCQUFnQ0YsUUFBaEM7QUFBQSxDQUFyQjs7QUFFQSxJQUFNRyxVQUFVLFNBQVZBLE9BQVUsQ0FBQ0MsV0FBRCxFQUFjQyxVQUFkLEVBQTZCO0FBQzNDQyxVQUFRQyxHQUFSLENBQVlULE9BQVo7QUFDQVEsVUFBUUMsR0FBUixDQUFlSCxXQUFmOztBQUVBLE1BQU1KLFdBQVdMLGFBQWpCO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWVIsU0FBU0MsUUFBVCxDQUFaOztBQUVBLE1BQU1RLFdBQVcsU0FBWEEsUUFBVyxHQUFxQjtBQUFBLFFBQXBCQyxXQUFvQix1RUFBTixDQUFNOztBQUNwQyxRQUFNQyxXQUFXLFNBQVhBLFFBQVcsQ0FBQ0MsWUFBRCxFQUFrQjtBQUNqQyxVQUFJQSxpQkFBaUJGLFdBQXJCLEVBQWtDO0FBQ2hDLGVBQU8sSUFBUDtBQUNEOztBQUVELFVBQU1HLEtBQUtQLFlBQVg7QUFDQUMsY0FBUUMsR0FBUixrQkFBMkIscUJBQVlLLEVBQVosQ0FBM0I7O0FBRUEsVUFBTUMsU0FBU2hCLFdBQWY7QUFDQSxVQUFNaUIsZ0JBQWdCLG1CQUFVRixFQUFWLENBQXRCOztBQUVBLFVBQUlFLGtCQUFrQkQsTUFBdEIsRUFBOEI7QUFDNUJQLGdCQUFRQyxHQUFSLENBQVksVUFBWjtBQUNBLGVBQU9HLFNBQVNDLGVBQWUsQ0FBeEIsQ0FBUDtBQUNEOztBQUVETCxjQUFRQyxHQUFSLFFBQWdCTSxNQUFoQixvREFBbUVDLGFBQW5FO0FBQ0EsYUFBTyxLQUFQO0FBQ0QsS0FsQkQ7O0FBb0JBLFdBQU9KLFNBQVMsQ0FBVCxDQUFQO0FBQ0QsR0F0QkQ7O0FBd0JBLE1BQU1LLFVBQVVQLFVBQWhCO0FBQ0EsTUFBSU8sT0FBSixFQUFhO0FBQ1hULFlBQVFDLEdBQVIsUUFBaUJMLGFBQWFGLFFBQWIsQ0FBakI7QUFDRCxHQUZELE1BRU87QUFDTE0sWUFBUUMsR0FBUixRQUFpQk4sT0FBT0QsUUFBUCxDQUFqQjtBQUNEO0FBQ0YsQ0FyQ0Q7O1FBd0NFTCxXLEdBQUFBLFc7UUFDQUksUSxHQUFBQSxRO1FBQ0FJLE8sR0FBQUEsTztRQUNBTCxPLEdBQUFBLE8iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVhZGxpbmVTeW5jIGZyb20gJ3JlYWRsaW5lLXN5bmMnO1xuaW1wb3J0IHsgZ2V0UXVlc3Rpb24sIGdldEFuc3dlciB9IGZyb20gJy4vbGliL3FhJztcblxuY29uc3QgYXNrVXNlck5hbWUgPSAoKSA9PiByZWFkbGluZVN5bmMucXVlc3Rpb24oJ01heSBJIGhhdmUgeW91ciBuYW1lPyAnKTtcbmNvbnN0IGFza0Fuc3dlciA9ICgpID0+IHJlYWRsaW5lU3luYy5xdWVzdGlvbignWW91ciBhbnN3ZXI6ICcpO1xuXG5jb25zdCB3ZWxjb21lID0gJ1dlbGNvbWUgdG8gdGhlIEJyYWluIEdhbWVzISc7XG5jb25zdCBncmVldGluZyA9IHVzZXJOYW1lID0+IGBIZWxsbywgJHt1c2VyTmFtZX0hYDtcbmNvbnN0IGxvc2luZyA9IHVzZXJOYW1lID0+IGBMZXQncyB0cnkgYWdhaW4sICR7dXNlck5hbWV9IWA7XG5jb25zdCBjb25ncmF0dWxhdGUgPSB1c2VyTmFtZSA9PiBgQ29uZ3JhdHVsYXRpb25zLCAke3VzZXJOYW1lfSFgO1xuXG5jb25zdCBydW5HYW1lID0gKGRlc2NyaXB0aW9uLCBnZW5lcmF0ZVFBKSA9PiB7XG4gIGNvbnNvbGUubG9nKHdlbGNvbWUpO1xuICBjb25zb2xlLmxvZyhgJHtkZXNjcmlwdGlvbn1cXG5gKTtcblxuICBjb25zdCB1c2VyTmFtZSA9IGFza1VzZXJOYW1lKCk7XG4gIGNvbnNvbGUubG9nKGdyZWV0aW5nKHVzZXJOYW1lKSk7XG5cbiAgY29uc3QgcGxheUdhbWUgPSAoY291bnRSb3VuZHMgPSAzKSA9PiB7XG4gICAgY29uc3QgbmV3Um91bmQgPSAocGFzc2VkUm91bmRzKSA9PiB7XG4gICAgICBpZiAocGFzc2VkUm91bmRzID09PSBjb3VudFJvdW5kcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcWEgPSBnZW5lcmF0ZVFBKCk7XG4gICAgICBjb25zb2xlLmxvZyhgXFxuUXVlc3Rpb246ICR7Z2V0UXVlc3Rpb24ocWEpfWApO1xuXG4gICAgICBjb25zdCBhbnN3ZXIgPSBhc2tBbnN3ZXIoKTtcbiAgICAgIGNvbnN0IGNvcnJlY3RBbnN3ZXIgPSBnZXRBbnN3ZXIocWEpO1xuXG4gICAgICBpZiAoY29ycmVjdEFuc3dlciA9PT0gYW5zd2VyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDb3JyZWN0IScpO1xuICAgICAgICByZXR1cm4gbmV3Um91bmQocGFzc2VkUm91bmRzICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGAnJHthbnN3ZXJ9JyBpcyB3cm9uZyBhbnN3ZXIgOyguIENvcnJlY3QgYW5zd2VyIHdhcyAnJHtjb3JyZWN0QW5zd2VyfScuYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIHJldHVybiBuZXdSb3VuZCgwKTtcbiAgfTtcblxuICBjb25zdCB1c2VyV29uID0gcGxheUdhbWUoKTtcbiAgaWYgKHVzZXJXb24pIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuJHtjb25ncmF0dWxhdGUodXNlck5hbWUpfWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGBcXG4ke2xvc2luZyh1c2VyTmFtZSl9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7XG4gIGFza1VzZXJOYW1lLFxuICBncmVldGluZyxcbiAgcnVuR2FtZSxcbiAgd2VsY29tZSxcbn07XG4iXX0=