project-braingames-simply
Version:
brain-games project
131 lines (113 loc) • 12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.makeGameData = exports.runGame = exports.runBrainGames = undefined;
var _readlineSync = require('readline-sync');
var _readlineSync2 = _interopRequireDefault(_readlineSync);
var _hexletPairs = require('hexlet-pairs');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var welcome = function welcome() {
console.log('Welcome to the Brain Games!');
};
var askName = function askName() {
console.log('May I have your name?');
var actualName = _readlineSync2.default.question('Your name: ');
console.log('Hello, ' + actualName + '!');
return actualName;
};
var runTimes = 3;
var getRandom = function getRandom() {
var minNum = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var maxNum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
var min = minNum;
var max = maxNum;
return Math.floor(Math.random() * (max - min + 1)) + min;
};
var makeGameData = function makeGameData(createQuestion, gameLogic) {
var question = createQuestion(getRandom);
var answer = gameLogic(question);
return (0, _hexletPairs.cons)(question, answer);
};
var getQuestionData = function getQuestionData(data) {
return (0, _hexletPairs.car)(data);
};
var getAnswerData = function getAnswerData(data) {
return (0, _hexletPairs.cdr)(data);
};
var makeAnswer = function makeAnswer(rightAnswer) {
var userAnswer = _readlineSync2.default.question('Your answer: ');
return (0, _hexletPairs.cons)(String(rightAnswer), String(userAnswer));
};
var getRightAnswer = function getRightAnswer(answer) {
return (0, _hexletPairs.car)(answer);
};
var getUserAnswer = function getUserAnswer(answer) {
return (0, _hexletPairs.cdr)(answer);
};
var isAnswerCorrect = function isAnswerCorrect(userName, answer) {
var isCorrect = getUserAnswer(answer) === getRightAnswer(answer);
if (isCorrect) {
console.log('Correct!');
} else {
console.log('"' + getUserAnswer(answer) + '" is wrong answer ;(. Correct answer was "' + getRightAnswer(answer) + '"');
console.log('Let\'s try again, ' + userName + '!');
}
return isCorrect;
};
var runGame = function runGame(getGameData) {
var gameDescription = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Game description';
welcome();
console.log(gameDescription);
var userName = askName();
for (var i = 0; i < runTimes; i += 1) {
var thisGameData = getGameData();
var question = getQuestionData(thisGameData);
console.log('Question: ' + question);
var answer = makeAnswer(getAnswerData(thisGameData));
if (!isAnswerCorrect(userName, answer)) return;
}
console.log('Congratulations, ' + userName + '!');
};
// ----- Run games using 'braing-games' -----
//
// const brainGamesList = ['0 - EvenGame', '1 - CalcGame', '2 - gcdGame'];
//
// const chooseGame = (userName) => {
// let plural = 's';
// if (brainGamesList.length <= 1) plural = '';
// console.log(`Choose your game${plural} from this list`);
// console.log(brainGamesList);
// const userChoice = readlineSync.question('Type number of your game: ');
// switch (userChoice) {
// case '0':
// runEvenGame(userName);
// break;
// case '1':
// runCalcGame(userName);
// break;
// case '2':
// runGcdGame(userName);
// break;
// default:
// console.log(`You chose wrong game, try again ${userName}`);
// break;
// }
// };
var runBrainGames = function runBrainGames() {
welcome();
askName();
// const userName = askName();
// chooseGame(userName);
// const infiniteCycle = true;
// while (infiniteCycle) {
// console.log('Wanna play again?');
// const playAgain = readlineSync.question('(yes/no): ');
// if (playAgain !== 'yes') break;
// chooseGame(userName);
// }
};
exports.runBrainGames = runBrainGames;
exports.runGame = runGame;
exports.makeGameData = makeGameData;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJ3ZWxjb21lIiwiY29uc29sZSIsImxvZyIsImFza05hbWUiLCJhY3R1YWxOYW1lIiwicmVhZGxpbmVTeW5jIiwicXVlc3Rpb24iLCJydW5UaW1lcyIsImdldFJhbmRvbSIsIm1pbk51bSIsIm1heE51bSIsIm1pbiIsIm1heCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsIm1ha2VHYW1lRGF0YSIsImNyZWF0ZVF1ZXN0aW9uIiwiZ2FtZUxvZ2ljIiwiYW5zd2VyIiwiZ2V0UXVlc3Rpb25EYXRhIiwiZGF0YSIsImdldEFuc3dlckRhdGEiLCJtYWtlQW5zd2VyIiwicmlnaHRBbnN3ZXIiLCJ1c2VyQW5zd2VyIiwiU3RyaW5nIiwiZ2V0UmlnaHRBbnN3ZXIiLCJnZXRVc2VyQW5zd2VyIiwiaXNBbnN3ZXJDb3JyZWN0IiwidXNlck5hbWUiLCJpc0NvcnJlY3QiLCJydW5HYW1lIiwiZ2V0R2FtZURhdGEiLCJnYW1lRGVzY3JpcHRpb24iLCJpIiwidGhpc0dhbWVEYXRhIiwicnVuQnJhaW5HYW1lcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQSxJQUFNQSxVQUFVLFNBQVZBLE9BQVUsR0FBTTtBQUNwQkMsVUFBUUMsR0FBUixDQUFZLDZCQUFaO0FBQ0QsQ0FGRDs7QUFJQSxJQUFNQyxVQUFVLFNBQVZBLE9BQVUsR0FBTTtBQUNwQkYsVUFBUUMsR0FBUixDQUFZLHVCQUFaO0FBQ0EsTUFBTUUsYUFBYUMsdUJBQWFDLFFBQWIsQ0FBc0IsYUFBdEIsQ0FBbkI7QUFDQUwsVUFBUUMsR0FBUixhQUFzQkUsVUFBdEI7QUFDQSxTQUFPQSxVQUFQO0FBQ0QsQ0FMRDs7QUFPQSxJQUFNRyxXQUFXLENBQWpCOztBQUVBLElBQU1DLFlBQVksU0FBWkEsU0FBWSxHQUE4QjtBQUFBLE1BQTdCQyxNQUE2Qix1RUFBcEIsQ0FBb0I7QUFBQSxNQUFqQkMsTUFBaUIsdUVBQVIsR0FBUTs7QUFDOUMsTUFBTUMs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bmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWFkbGluZVN5bmMgZnJvbSAncmVhZGxpbmUtc3luYyc7XG5pbXBvcnQgeyBjb25zLCBjYXIsIGNkciB9IGZyb20gJ2hleGxldC1wYWlycyc7XG5cbmNvbnN0IHdlbGNvbWUgPSAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKCdXZWxjb21lIHRvIHRoZSBCcmFpbiBHYW1lcyEnKTtcbn07XG5cbmNvbnN0IGFza05hbWUgPSAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKCdNYXkgSSBoYXZlIHlvdXIgbmFtZT8nKTtcbiAgY29uc3QgYWN0dWFsTmFtZSA9IHJlYWRsaW5lU3luYy5xdWVzdGlvbignWW91ciBuYW1lOiAnKTtcbiAgY29uc29sZS5sb2coYEhlbGxvLCAke2FjdHVhbE5hbWV9IWApO1xuICByZXR1cm4gYWN0dWFsTmFtZTtcbn07XG5cbmNvbnN0IHJ1blRpbWVzID0gMztcblxuY29uc3QgZ2V0UmFuZG9tID0gKG1pbk51bSA9IDAsIG1heE51bSA9IDEwMCkgPT4ge1xuICBjb25zdCBtaW4gPSBtaW5OdW07XG4gIGNvbnN0IG1heCA9IG1heE51bTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG59O1xuXG5jb25zdCBtYWtlR2FtZURhdGEgPSAoY3JlYXRlUXVlc3Rpb24sIGdhbWVMb2dpYykgPT4ge1xuICBjb25zdCBxdWVzdGlvbiA9IGNyZWF0ZVF1ZXN0aW9uKGdldFJhbmRvbSk7XG4gIGNvbnN0IGFuc3dlciA9IGdhbWVMb2dpYyhxdWVzdGlvbik7XG4gIHJldHVybiBjb25zKHF1ZXN0aW9uLCBhbnN3ZXIpO1xufTtcbmNvbnN0IGdldFF1ZXN0aW9uRGF0YSA9IGRhdGEgPT4gY2FyKGRhdGEpO1xuY29uc3QgZ2V0QW5zd2VyRGF0YSA9IGRhdGEgPT4gY2RyKGRhdGEpO1xuXG5jb25zdCBtYWtlQW5zd2VyID0gKHJpZ2h0QW5zd2VyKSA9PiB7XG4gIGNvbnN0IHVzZXJBbnN3ZXIgPSByZWFkbGluZVN5bmMucXVlc3Rpb24oJ1lvdXIgYW5zd2VyOiAnKTtcbiAgcmV0dXJuIGNvbnMoU3RyaW5nKHJpZ2h0QW5zd2VyKSwgU3RyaW5nKHVzZXJBbnN3ZXIpKTtcbn07XG5jb25zdCBnZXRSaWdodEFuc3dlciA9IGFuc3dlciA9PiBjYXIoYW5zd2VyKTtcbmNvbnN0IGdldFVzZXJBbnN3ZXIgPSBhbnN3ZXIgPT4gY2RyKGFuc3dlcik7XG5cbmNvbnN0IGlzQW5zd2VyQ29ycmVjdCA9ICh1c2VyTmFtZSwgYW5zd2VyKSA9PiB7XG4gIGNvbnN0IGlzQ29ycmVjdCA9IGdldFVzZXJBbnN3ZXIoYW5zd2VyKSA9PT0gZ2V0UmlnaHRBbnN3ZXIoYW5zd2VyKTtcbiAgaWYgKGlzQ29ycmVjdCkge1xuICAgIGNvbnNvbGUubG9nKCdDb3JyZWN0IScpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGBcIiR7Z2V0VXNlckFuc3dlcihhbnN3ZXIpfVwiIGlzIHdyb25nIGFuc3dlciA7KC4gQ29ycmVjdCBhbnN3ZXIgd2FzIFwiJHtnZXRSaWdodEFuc3dlcihhbnN3ZXIpfVwiYCk7XG4gICAgY29uc29sZS5sb2coYExldCdzIHRyeSBhZ2FpbiwgJHt1c2VyTmFtZX0hYCk7XG4gIH1cbiAgcmV0dXJuIGlzQ29ycmVjdDtcbn07XG5cbmNvbnN0IHJ1bkdhbWUgPSAoZ2V0R2FtZURhdGEsIGdhbWVEZXNjcmlwdGlvbiA9ICdHYW1lIGRlc2NyaXB0aW9uJykgPT4ge1xuICB3ZWxjb21lKCk7XG4gIGNvbnNvbGUubG9nKGdhbWVEZXNjcmlwdGlvbik7XG4gIGNvbnN0IHVzZXJOYW1lID0gYXNrTmFtZSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJ1blRpbWVzOyBpICs9IDEpIHtcbiAgICBjb25zdCB0aGlzR2FtZURhdGEgPSBnZXRHYW1lRGF0YSgpO1xuICAgIGNvbnN0IHF1ZXN0aW9uID0gZ2V0UXVlc3Rpb25EYXRhKHRoaXNHYW1lRGF0YSk7XG4gICAgY29uc29sZS5sb2coYFF1ZXN0aW9uOiAke3F1ZXN0aW9ufWApO1xuICAgIGNvbnN0IGFuc3dlciA9IG1ha2VBbnN3ZXIoZ2V0QW5zd2VyRGF0YSh0aGlzR2FtZURhdGEpKTtcbiAgICBpZiAoIWlzQW5zd2VyQ29ycmVjdCh1c2VyTmFtZSwgYW5zd2VyKSkgcmV0dXJuO1xuICB9XG4gIGNvbnNvbGUubG9nKGBDb25ncmF0dWxhdGlvbnMsICR7dXNlck5hbWV9IWApO1xufTtcblxuLy8gLS0tLS0gUnVuIGdhbWVzIHVzaW5nICdicmFpbmctZ2FtZXMnIC0tLS0tXG4vL1xuLy8gY29uc3QgYnJhaW5HYW1lc0xpc3QgPSBbJzAgLSBFdmVuR2FtZScsICcxIC0gQ2FsY0dhbWUnLCAnMiAtIGdjZEdhbWUnXTtcbi8vXG4vLyBjb25zdCBjaG9vc2VHYW1lID0gKHVzZXJOYW1lKSA9PiB7XG4vLyAgIGxldCBwbHVyYWwgPSAncyc7XG4vLyAgIGlmIChicmFpbkdhbWVzTGlzdC5sZW5ndGggPD0gMSkgcGx1cmFsID0gJyc7XG4vLyAgIGNvbnNvbGUubG9nKGBDaG9vc2UgeW91ciBnYW1lJHtwbHVyYWx9IGZyb20gdGhpcyBsaXN0YCk7XG4vLyAgIGNvbnNvbGUubG9nKGJyYWluR2FtZXNMaXN0KTtcbi8vICAgY29uc3QgdXNlckNob2ljZSA9IHJlYWRsaW5lU3luYy5xdWVzdGlvbignVHlwZSBudW1iZXIgb2YgeW91ciBnYW1lOiAnKTtcbi8vICAgc3dpdGNoICh1c2VyQ2hvaWNlKSB7XG4vLyAgICAgY2FzZSAnMCc6XG4vLyAgICAgICBydW5FdmVuR2FtZSh1c2VyTmFtZSk7XG4vLyAgICAgICBicmVhaztcbi8vICAgICBjYXNlICcxJzpcbi8vICAgICAgIHJ1bkNhbGNHYW1lKHVzZXJOYW1lKTtcbi8vICAgICAgIGJyZWFrO1xuLy8gICAgIGNhc2UgJzInOlxuLy8gICAgICAgcnVuR2NkR2FtZSh1c2VyTmFtZSk7XG4vLyAgICAgICBicmVhaztcbi8vICAgICBkZWZhdWx0OlxuLy8gICAgICAgY29uc29sZS5sb2coYFlvdSBjaG9zZSB3cm9uZyBnYW1lLCB0cnkgYWdhaW4gJHt1c2VyTmFtZX1gKTtcbi8vICAgICAgIGJyZWFrO1xuLy8gICB9XG4vLyB9O1xuXG5jb25zdCBydW5CcmFpbkdhbWVzID0gKCkgPT4ge1xuICB3ZWxjb21lKCk7XG4gIGFza05hbWUoKTtcbiAgLy8gY29uc3QgdXNlck5hbWUgPSBhc2tOYW1lKCk7XG4gIC8vIGNob29zZUdhbWUodXNlck5hbWUpO1xuICAvLyBjb25zdCBpbmZpbml0ZUN5Y2xlID0gdHJ1ZTtcbiAgLy8gd2hpbGUgKGluZmluaXRlQ3ljbGUpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnV2FubmEgcGxheSBhZ2Fpbj8nKTtcbiAgLy8gICBjb25zdCBwbGF5QWdhaW4gPSByZWFkbGluZVN5bmMucXVlc3Rpb24oJyh5ZXMvbm8pOiAnKTtcbiAgLy8gICBpZiAocGxheUFnYWluICE9PSAneWVzJykgYnJlYWs7XG4gIC8vICAgY2hvb3NlR2FtZSh1c2VyTmFtZSk7XG4gIC8vIH1cbn07XG5cbmV4cG9ydCB7IHJ1bkJyYWluR2FtZXMsIHJ1bkdhbWUsIG1ha2VHYW1lRGF0YSB9O1xuIl19