brain-games-irastypain
Version:
This package is implementation of first project at Hexlet
79 lines (61 loc) • 6.35 kB
JavaScript
;
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=