Я предполагаю, что ваш первый вызов handleGuess()
без параметров.
Затем ваша программа запрашивает у пользователя первое предположение (с сообщением «Исправь свой ответ, дурак!»). Если вы вызываете handleGuess()
с параметром, все равно действует следующее:
После этого начнется цикл.
если первый ответ неверен, консоль отобразит сообщение «Думай [выше / ниже], ты дурак»., А затем запросит секунду предположение. Все еще в первой итерации цикла.
Вы видите, где проблема?
Если второе предположение все еще неверно, консоль отобразит второе неверное сообщение и запросит третье предположение, еще находясь во второй итерации цикла.
Наконец, если третье предположение все еще неверно, появится третье «неправильное» сообщение, и ваш код запросит четвертое предположение перед завершением цикла и отобразит сообщение «Чувак ... ТЫ ХОРОШО» !» без проверки вашего ввода.
Чтобы предотвратить это, вы можете сделать что-то вроде этого:
function handleGuess(userGuess) {
i = 0;
do {
if(i > 0) {
if(userGuess > randomNumber) {
hint = "Think lower you fool.";
} else {
hint = "Think higher you fool.";
}
console.log(hint);
userGuess = readlineSync.question("Guess again. \n");
}
while(isNaN(userGuess)) {
userGuess = readlineSync.question("Correct you guess. \n");
}
} while(userGuess != randomNumber && i < maxGuesses);
if (userGuess == randomNumber) {
console.log(userGuess + " is CORRECT! YOU WIN!");
} else {
console.log("Dude...YOU SUCK!");
}
}