Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите доделать задачу используя функции

DeZerTIR_rus Знаток (315), закрыт 4 года назад
Добрый день.
Вот такая задача с загадками, но не могу понять как сделать красиво с использованием функции.
Весь код по ссылке - https://pastebin.com/RwGgQUz6
как сделать функцией данную часть + необходимо i + 1 чтобы перейти на следующий вопрос?

alert(questions[i][0]);
var userAnswer = prompt("Введите ответ:");
if (questions[i].includes(userAnswer, 1))
{
alert("Поздравляю, Вы угадали!");
score++;
}
else alert("Вы не угадали :'( ");
Дополнен 4 года назад
Если можете, то и объяснить, что бы я мог понять как этим пользоваться.
Лучший ответ
Elepsis Eclipse Гений (64070) 4 года назад
Золотое правило: Чем меньше кликов делает пользователь, тем лучше...

https://jsfiddle.net/OPTlMUS/cx82hmsu/ - рабочий пример.

var questions = [
  ["Отгдайте загадку №1 - Что это такое: синий, большой, с усами и полностью набит зайцами?", "троллейбус"],
  ["Отгдайте загадку №2 - Кто приходит, кто уходит, Все ее за ручку водят.", "дверь", "дверца"],
  ["Отгдайте загадку №3 - Если б не было его, не сказал бы ничего.", "язык", "language"],
  ["Отгдайте загадку №4 - Не лает, не кусает, а к будке привязана.", "цепь", "цепочка"],
];

document.getElementById('start').addEventListener('click', startTheGame);

function startTheGame() {
  alert("Добро пожаловать в 'Игра в загадки'"); // приветствие
  var score = 0;
  var guess = "";
  var result = "К сожалению, но вы не смогли разгадать ни одной загадки!";
  var i = 0;
  questionManager();

  function questionManager(){
    if( i == questions.length ){ showResults(); return; }
    var userAnswer = prompt(guess + questions[i][0], "");
    if( !userAnswer ){ /* Если нажали cancel */
      showResults();
      return;
    }

    if( questions[i].includes(userAnswer.toLowerCase(),1) ){
      score++;
      guess = "Поздравляю! Вы угадали! \n";
    } else {
      guess = "Вы не угадали :'(\n";
    }
    i++;
    questionManager();
  }

  function showResults(){
    if(guess){ result = "Игра окончена. Правильных ответов: " + score + " из " + i }
    alert(result);
  }
}
Остальные ответы
Молот Шотландцев Высший разум (300965) 4 года назад
Как-то так. Цикл и рекурсия. Рекурсия в данном случае будет упрямо выводить промпт пока не получит правильный ответ. Без нее движение по циклу продолжится и без правильного ответа.
alert("Добро пожаловать в 'Игра в загадки'"); // приветствие
var score = 0;
var questions = [
["Отгдайте загадку №1 - Что это такое: синий, большой, с усами и полностью набит зайцами?",],
["Отгдайте загадку №2 - Кто приходит, кто уходит, Все ее за ручку водят."],
["Отгдайте загадку №3 - Если б не было его, не сказал бы ничего."],
["Отгдайте загадку №4 - Не лает, не кусает, а к будке привязана."],
]
for (var i = 0; i < questions.length; i++) {
function Answer (i) {
var answers = ['Троллейбус','Дверь','Язык','Цепь'];
var p = prompt(questions[i]);
if (p == answers[i].toLowerCase()) {
alert('правильно');
score++;
} else {
alert('побробуйте еще раз');
Answer(i)
}
}
Answer(i)
};
alert(score)
Похожие вопросы