Как сделать вопрос ответ в readline
Мне нужно реализовать код который сможет задавать вопрос пользователю, а пользователь сможет на него ответить и таких вопросов должно быть несколько штук.
Вот что получилось, но сам счётчик работает неправильно, не знаю как записать конец вопроса. Помогите решить проблему. const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // Предметная область // Основы CSS const questions = [ 'Многоцелевое свойство, которое определяет, как элемент должен быть показан в документе, называется?', 'Свойство которое, устанавливает способ позиционирования элемента относительно окна браузера или других объектов на веб-странице, называется?', 'Свойство которое, определяет цвет текста элемента, называется?', 'Свойство которое, устанавливает величину отступа от каждого края элемента, называется?', 'Свойство, предназначенное для отображения или скрытия элемента, включая рамку вокруг него и фон, называется?' ]; let scoreW = 0, scoreL = 0; console.log( `Тестировщик знаний. Тема: Основы CSS.` ); readline.clearLine() rl.question('Для старта нажмите Enter', () => { console.clear(); }); rl.question(questions[0], (say) => { say == 'display' || say == 'Display' ? scoreW++ : scoreL++; console.clear(); }); rl.question(questions[1], (say) => { say == 'position' || say == 'Position' ? scoreW++ : scoreL++; console.clear(); console.log( `Правильные ответы:${scoreW} Неправильные ответы:${scoreL}` ); }); |
Кхе-кхе...
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // Предметная область // Основы CSS const questions = [ 'Многоцелевое свойство, которое определяет, как элемент должен быть показан в документе, называется?', 'Свойство которое, устанавливает способ позиционирования элемента относительно окна браузера или других объектов на веб-странице, называется?', 'Свойство которое, определяет цвет текста элемента, называется?', 'Свойство которое, устанавливает величину отступа от каждого края элемента, называется?', 'Свойство, предназначенное для отображения или скрытия элемента, включая рамку вокруг него и фон, называется?' ]; let scoreW = 0, scoreL = 0; console.log( `Тестировщик знаний. Тема: Основы CSS.` ); rl.on('close', function() { console.log(`Правильные ответы:${scoreW} Неправильные ответы:${scoreL}`); }); rl.question('Для старта нажмите Enter', () => { rl.question(questions[0], say => { say == 'display' || say == 'Display' ? scoreW++ : scoreL++; rl.question(questions[1], say => { say == 'display' || say == 'Display' ? scoreW++ : scoreL++; rl.question(questions[2], say => { say == 'display' || say == 'Display' ? scoreW++ : scoreL++; rl.question(questions[3], say => { say == 'display' || say == 'Display' ? scoreW++ : scoreL++; rl.question(questions[4], say => { say == 'display' || say == 'Display' ? scoreW++ : scoreL++; rl.close(); }); }); }); }); }); }); Ну, или... const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // Предметная область // Основы CSS const questions = [ 'Многоцелевое свойство, которое определяет, как элемент должен быть показан в документе, называется?', 'Свойство которое, устанавливает способ позиционирования элемента относительно окна браузера или других объектов на веб-странице, называется?', 'Свойство которое, определяет цвет текста элемента, называется?', 'Свойство которое, устанавливает величину отступа от каждого края элемента, называется?', 'Свойство, предназначенное для отображения или скрытия элемента, включая рамку вокруг него и фон, называется?' ]; var answers = ['display', 'dfdf', 'dfdf', 'dfdf', 'dfdf']; let scoreW = 0, scoreL = 0; console.log( `Тестировщик знаний. Тема: Основы CSS.` ); rl.on('close', function() { console.log(`Правильные ответы:${scoreW} Неправильные ответы:${scoreL}`); }); goQuest(); async function goQuest() { for(var i=0; i<questions.length; i++) { var res = await foo(questions[i], answers[i]); if(res == 1) scoreW++; else scoreL++; } rl.close(); } function foo(q, a) { return new Promise( function(resolve, reject) { rl.question(q, say => { say.toLowerCase() == a ? resolve(1) : resolve(0); }); }); } |
Я просто пока это писал, думал о прелестном паскале, который позволяет делать это в разы легче)
Мне понравился вариант с матрёшкой, спасибо большое! |
Вот так всегда. Хочешь как лучше, а нравится - что похуже.
|
Часовой пояс GMT +3, время: 03:45. |