#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:
- Вместо имени функции указано неправильное
checkGuessing
checkGuess
checkGuessing
имеет неправильную логику, чтобы проверить, верна ли догадка- Он вызывается только тогда, когда пользователь отменяет приглашение
- Нет никакой проверки, если
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();