как исправить только первое окно предупреждений показывает

#javascript #arrays #if-statement #alert

Вопрос:

я создаю игру для выбора генератора цветов, и я не уверен, почему только первое предупреждение о цикле принимается навсегда, и оно игнорирует все остальные. я уже дважды пытался переписать его и уже возвращал после каждого предупреждения.

 COLOR_ARRAY = ['blue', 'cyan', 'gold', 'gray', 'green', 'magenta', 'orange', 'red', 'white', 'yellow'];

function runGame() {
  let guess = "";
  let correct = false;

  const targetIndex = Math.floor(Math.random() * COLOR_ARRAY.length);
  const target = COLOR_ARRAY[targetIndex];
  console.log(targetIndex, target);

  do {
    guess = prompt('I am thinking of one of these colors:nn'   COLOR_ARRAY   'nn What color am I thinking of ?n');

    if (guess === null) {
      alert('bye');
      return;
      correct = checkGuess(guess, target);
    }
  } while (!correct);
  alert('congratulations!');
}


function checkGuessing(guess, target) {
  let correct = false;
  let right = true;
  if (COLOR_ARRAY.includes(guess)) {
    alert('Color not recognized.');
  } else if (guess > target) {
    alert('Guess incorrectnn higher than target.');
  } else if (guess < target) {
    alert('Guess is incorrect...Lower than target.');
  } else {

  }

  return right;
}

runGame(); 

Комментарии:

1. Твое checkGuess — после return , так что никогда не исполняй. Если удалить оператор return, он все равно будет выполнен только тогда, когда вы отмените свой prompt . Переместить его за пределы if тела?

2. О, и нет никакой названной функции checkGuess , только checkGuessing

3. У вас есть функция проверки, а затем вы вызываете функцию проверки? И после возвращения не ставьте эту галочку, потому что она недоступна.

Ответ №1:

  1. Вместо имени функции указано неправильное checkGuessing checkGuess
  2. checkGuessing имеет неправильную логику, чтобы проверить, верна ли догадка
  3. Он вызывается только тогда, когда пользователь отменяет приглашение
  4. Нет никакой проверки, если target == guess
 COLOR_ARRAY = ['blue', 'cyan', 'gold', 'gray', 'green', 'magenta', 'orange', 'red', 'white', 'yellow'];

function runGame() {
  let guess = "";
  let correct = false;

  const targetIndex = Math.floor(Math.random() * COLOR_ARRAY.length);
  const target = COLOR_ARRAY[targetIndex];
  console.log(targetIndex, target);

  do {
    guess = prompt('I am thinking of one of these colors:nn'   COLOR_ARRAY   'nn What color am I thinking of ?n');

    if (guess === null) {
      alert('bye');
      return;
    }
    
    checkGuess(guess, target);
    
    if (guess == target) {
        correct = true;
    }
  } while (!correct);
  alert('congratulations!');
}


function checkGuess(guess, target) {
  if (!COLOR_ARRAY.includes(guess)) {
    alert('Color not recognized.');
  }
  
  if (guess > target) {
    alert('Guess incorrectnn higher than target.');
  }

  if (guess < target) {
    alert('Guess is incorrect...Lower than target.');
  }
}

runGame();