#javascript #html
Вопрос:
Эй, я работаю над проектом игры в угадайку с помощью javascript, который предполагает ввод числа в приглашение «Дайте мне число от 1 до 10». Инструкции должны включать следующее:
хотя предположение не равно целевому запросу на новое предположение, если предположение меньше целевого, выведите «слишком низко!», иначе, если предположение больше целевого, выведите «слишком высоко!», иначе выведите «Вы поняли!»
Таким образом, у меня есть цикл while и условные операторы if, но я не знаю, как содержать мои операторы if внутри цикла while. Мои фактические результаты просто побуждают меня угадывать снова и снова, не предупреждая слишком высоко! или слишком низко! Однако мое утверждение » еще » при угадывании правильного числа, похоже, работает. Спасибо.
let min = 1;
let max = 10;
let target = Math.random() * (max - min 1);
target = Math.floor(target) min;
let guess = (0);
guess = prompt("Give me a number between 1 and 10");
console.log("Your guess is" guess);
while (guess != target) {
prompt("Guess again");
console.log(guess);
}
if (guess < target) {
alert("too low!");
console.log("too low guess", guess);
} else if (guess > target) {
alert("too high!");
console.log("too high guess", guess);
} else {
alert("You got it!");
}
Комментарии:
1. Вы не переназначаете значение предположения, и результат запроса всегда является строкой или нулем, поэтому вы также должны преобразовать его в число
2. «Мои фактические результаты просто побуждают меня снова и снова угадывать, не предупреждая слишком высоко! или слишком низко!» — потому
if ... else ...
что деталь не входит вwhile
цикл3. Вы должны поместить содержимое if..else в блок while, а не после него.
Ответ №1:
В настоящее время ваш код выполняет это:
- Навсегда: спросите «угадай еще раз».
- После того, как «навсегда» закончится (чего никогда не будет!) , проверьте значение
guess
. Кроме того, значениеguess
того же, что и при первом задании вопроса.
Ты захочешь этого:
- Навсегда: спросите «угадай еще раз».
- После «угадайте еще раз» проверьте и сохраните сохраненное значение последнего ответа.
- Если ответ правильный, остановите вечно работающий цикл.
Но что также важно: убедитесь prompt
, что возвращает номер, потому что в текстовом приглашении может быть введено все, что угодно.
Так что это было бы:
// See Note 1.
guess = parseInt(prompt("Give me a number between 1 and 10"), 10);
console.log("Your guess is" guess);
// 1. Do something forever
while (guess != target){
// 2. store the last answer
guess = parseInt(prompt("Guess again"), 10);
console.log(guess);
// 2b. check the last answer
if (guess < target){
alert("too low!");
console.log("too low guess", guess);
}else if (guess > target){
alert("too high!");
console.log("too high guess", guess);
}
// 3. If the answer is correct, `guess === target` so the loop will end.
}
// See Note 2.
alert("You got it!");
Примечание 1: Если игрок введет что-то, что нельзя превратить в целое число, parseInt(, 10)
оно вернется NaN
(не число). Вы можете проверить это: isNaN(123)
/ isNaN(NaN)
.
Примечание 2: Ваше приложение не покажет сообщение, если игрок исправит его за один раз, потому что «вы поняли» было внутри цикла. Если бы ответ был правильным с первого раза, цикл никогда бы не был введен. Поместите сообщение за пределы цикла, чтобы исправить это.