UNPKG

hexlet-braingames-by-mput

Version:

Learning Hexlet.io node.js project implementation.

65 lines (54 loc) 6.15 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.gameEngine = exports.getName = exports.greeter = undefined; var _readlineSync = require('readline-sync'); var _readlineSync2 = _interopRequireDefault(_readlineSync); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var RED = '\x1b[31m'; var GREEN = '\x1b[32m'; var BLUE = '\x1b[34m'; var NC = '\x1b[0m'; var greeter = function greeter(rules) { console.log(GREEN + 'Welcome to the Brain Games!' + NC); if (rules) { console.log(rules); } }; var getName = function getName() { var userName = _readlineSync2.default.question('May I have your name? '); console.log('Hello, ' + userName + '!'); return userName; }; var getAnswer = function getAnswer(question) { console.log('Question: ' + BLUE + question + NC); var answer = _readlineSync2.default.question('Your answer: '); return answer; }; var gameEngine = function gameEngine(CalcQuestion, name) { var runGame = function runGame() { var rightAnswerCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var shouldBeRight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3; if (rightAnswerCount === shouldBeRight) { console.log(GREEN + 'Congratulations, ' + name + '!' + NC); return 'Game over'; } var questionInst = new CalcQuestion(); var toUserQuestion = questionInst.question; var rightAnswer = questionInst.answer; var userAnswer = getAnswer(toUserQuestion); if (userAnswer === rightAnswer) { console.log('Correct!'); return runGame(rightAnswerCount + 1); } console.log(RED + '\'' + userAnswer + '\' is is wrong answer ;(. Correct answer was \'' + rightAnswer + '\'.' + NC); console.log('Let\'s try again, ' + name + '!'); return runGame(); }; return runGame; }; exports.greeter = greeter; exports.getName = getName; exports.gameEngine = gameEngine; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9nYW1lRW5naW5lLmpzIl0sIm5hbWVzIjpbIlJFRCIsIkdSRUVOIiwiQkxVRSIsIk5DIiwiZ3JlZXRlciIsInJ1bGVzIiwiY29uc29sZSIsImxvZyIsImdldE5hbWUiLCJ1c2VyTmFtZSIsInF1ZXN0aW9uIiwiZ2V0QW5zd2VyIiwiYW5zd2VyIiwiZ2FtZUVuZ2luZSIsIkNhbGNRdWVzdGlvbiIsIm5hbWUiLCJydW5HYW1lIiwicmlnaHRBbnN3ZXJDb3VudCIsInNob3VsZEJlUmlnaHQiLCJxdWVzdGlvbkluc3QiLCJ0b1VzZXJRdWVzdGlvbiIsInJpZ2h0QW5zd2VyIiwidXNlckFuc3dlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSxNQUFNLFVBQVo7QUFDQSxJQUFNQyxRQUFRLFVBQWQ7QUFDQSxJQUFNQyxPQUFPLFVBQWI7QUFDQSxJQUFNQyxLQUFLLFNBQVg7O0FBRUEsSUFBTUMsVUFBVSxTQUFWQSxPQUFVLENBQUNDLEtBQUQsRUFBVztBQUN6QkMsVUFBUUMsR0FBUixDQUFlTixLQUFmLG1DQUFrREUsRUFBbEQ7QUFDQSxNQUFJRSxLQUFKLEVBQVc7QUFDVEMsWUFBUUMsR0FBUixDQUFZRixLQUFaO0FBQ0Q7QUFDRixDQUxEOztBQU9BLElBQU1HLFVBQVUsU0FBVkEsT0FBVSxHQUFNO0FBQ3BCLE1BQU1DLFdBQVcsdUJBQWFDLFFBQWIsQ0FBc0Isd0JBQXRCLENBQWpCO0FBQ0FKLFVBQVFDLEdBQVIsYUFBc0JFLFFBQXRCO0FBQ0EsU0FBT0EsUUFBUDtBQUNELENBSkQ7O0FBTUEsSUFBTUUsWUFBWSxTQUFaQSxTQUFZLENBQUNELFFBQUQsRUFBYztBQUM5QkosVUFBUUMsR0FBUixnQkFBeUJMLElBQXpCLEdBQWdDUSxRQUFoQyxHQUEyQ1AsRUFBM0M7QUFDQSxNQUFNUyxTQUFTLHVCQUFhRixRQUFiLENBQXNCLGVBQXRCLENBQWY7QUFDQSxTQUFPRSxNQUFQO0FBQ0QsQ0FKRDs7QUFNQSxJQUFNQyxhQUFhLFNBQWJBLFVBQWEsQ0FBQ0MsWUFBRCxFQUFlQyxJQUFmLEVBQXdCO0FBQ3pDLE1BQU1DLFVBQVUsU0FBVkEsT0FBVSxHQUE2QztBQUFBLFFBQTVDQyxnQkFBNEMsdUVBQXpCLENBQXlCO0FBQUEsUUFBdEJDLGFBQXNCLHVFQUFOLENBQU07O0FBQzNELFFBQUlELHFCQUFxQkMsYUFBekIsRUFBd0M7QUFDdENaLGNBQVFDLEdBQVIsQ0FBZU4sS0FBZix5QkFBd0NjLElBQXhDLFNBQWdEWixFQUFoRDtBQUNBLGFBQU8sV0FBUDtBQUNEO0FBQ0QsUUFBTWdCLGVBQWUsSUFBSUwsWUFBSixFQUFyQjtBQUNBLFFBQU1NLGlCQUFpQkQsYUFBYVQsUUFBcEM7QUFDQSxRQUFNVyxjQUFjRixhQUFhUCxNQUFqQztBQUNBLFFBQU1VLGFBQWFYLFVBQVVTLGNBQVYsQ0FBbkI7QUFDQSxRQUFJRSxlQUFlRCxXQUFuQixFQUFnQztBQUM5QmYsY0FBUUMsR0FBUixDQUFZLFVBQVo7QUFDQSxhQUFPUyxRQUFRQyxtQkFBbUIsQ0FBM0IsQ0FBUDtBQUNEO0FBQ0RYLFlBQVFDLEdBQVIsQ0FBZVAsR0FBZixVQUFzQnNCLFVBQXRCLHVEQUFnRkQsV0FBaEYsV0FBZ0dsQixFQUFoRztBQUNBRyxZQUFRQyxHQUFSLHdCQUFnQ1EsSUFBaEM7QUFDQSxXQUFPQyxTQUFQO0FBQ0QsR0FoQkQ7QUFpQkEsU0FBT0EsT0FBUDtBQUNELENBbkJEOztRQXFCU1osTyxHQUFBQSxPO1FBQVNJLE8sR0FBQUEsTztRQUFTSyxVLEdBQUFBLFUiLCJmaWxlIjoiZ2FtZUVuZ2luZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWFkbGluZVN5bmMgZnJvbSAncmVhZGxpbmUtc3luYyc7XG5cbmNvbnN0IFJFRCA9ICdcXHgxYlszMW0nO1xuY29uc3QgR1JFRU4gPSAnXFx4MWJbMzJtJztcbmNvbnN0IEJMVUUgPSAnXFx4MWJbMzRtJztcbmNvbnN0IE5DID0gJ1xceDFiWzBtJztcblxuY29uc3QgZ3JlZXRlciA9IChydWxlcykgPT4ge1xuICBjb25zb2xlLmxvZyhgJHtHUkVFTn1XZWxjb21lIHRvIHRoZSBCcmFpbiBHYW1lcyEke05DfWApO1xuICBpZiAocnVsZXMpIHtcbiAgICBjb25zb2xlLmxvZyhydWxlcyk7XG4gIH1cbn07XG5cbmNvbnN0IGdldE5hbWUgPSAoKSA9PiB7XG4gIGNvbnN0IHVzZXJOYW1lID0gcmVhZGxpbmVTeW5jLnF1ZXN0aW9uKCdNYXkgSSBoYXZlIHlvdXIgbmFtZT8gJyk7XG4gIGNvbnNvbGUubG9nKGBIZWxsbywgJHt1c2VyTmFtZX0hYCk7XG4gIHJldHVybiB1c2VyTmFtZTtcbn07XG5cbmNvbnN0IGdldEFuc3dlciA9IChxdWVzdGlvbikgPT4ge1xuICBjb25zb2xlLmxvZyhgUXVlc3Rpb246ICR7QkxVRX0ke3F1ZXN0aW9ufSR7TkN9YCk7XG4gIGNvbnN0IGFuc3dlciA9IHJlYWRsaW5lU3luYy5xdWVzdGlvbignWW91ciBhbnN3ZXI6ICcpO1xuICByZXR1cm4gYW5zd2VyO1xufTtcblxuY29uc3QgZ2FtZUVuZ2luZSA9IChDYWxjUXVlc3Rpb24sIG5hbWUpID0+IHtcbiAgY29uc3QgcnVuR2FtZSA9IChyaWdodEFuc3dlckNvdW50ID0gMCwgc2hvdWxkQmVSaWdodCA9IDMpID0+IHtcbiAgICBpZiAocmlnaHRBbnN3ZXJDb3VudCA9PT0gc2hvdWxkQmVSaWdodCkge1xuICAgICAgY29uc29sZS5sb2coYCR7R1JFRU59Q29uZ3JhdHVsYXRpb25zLCAke25hbWV9ISR7TkN9YCk7XG4gICAgICByZXR1cm4gJ0dhbWUgb3Zlcic7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXN0aW9uSW5zdCA9IG5ldyBDYWxjUXVlc3Rpb24oKTtcbiAgICBjb25zdCB0b1VzZXJRdWVzdGlvbiA9IHF1ZXN0aW9uSW5zdC5xdWVzdGlvbjtcbiAgICBjb25zdCByaWdodEFuc3dlciA9IHF1ZXN0aW9uSW5zdC5hbnN3ZXI7XG4gICAgY29uc3QgdXNlckFuc3dlciA9IGdldEFuc3dlcih0b1VzZXJRdWVzdGlvbik7XG4gICAgaWYgKHVzZXJBbnN3ZXIgPT09IHJpZ2h0QW5zd2VyKSB7XG4gICAgICBjb25zb2xlLmxvZygnQ29ycmVjdCEnKTtcbiAgICAgIHJldHVybiBydW5HYW1lKHJpZ2h0QW5zd2VyQ291bnQgKyAxKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYCR7UkVEfScke3VzZXJBbnN3ZXJ9JyBpcyBpcyB3cm9uZyBhbnN3ZXIgOyguIENvcnJlY3QgYW5zd2VyIHdhcyAnJHtyaWdodEFuc3dlcn0nLiR7TkN9YCk7XG4gICAgY29uc29sZS5sb2coYExldCdzIHRyeSBhZ2FpbiwgJHtuYW1lfSFgKTtcbiAgICByZXR1cm4gcnVuR2FtZSgpO1xuICB9O1xuICByZXR1cm4gcnVuR2FtZTtcbn07XG5cbmV4cG9ydCB7IGdyZWV0ZXIsIGdldE5hbWUsIGdhbWVFbmdpbmUgfTtcbiJdfQ==