UNPKG

project-braingames-simply

Version:
131 lines (113 loc) 12 kB
'use strict'; 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