Javascript 猜号游戏
Javascript number guessing game
我似乎无法让这段代码在找到正确答案时提醒用户,也无法让弹出窗口继续循环播放。我将其编码为学习练习。在 JS 中,我非常菜鸟。
有人可以审查我的代码并提供建设性的批评吗?
// noprotect
var targetNumber = Math.floor(Math.random() * 100 + 1);
var userGuess = prompt("Pick a number from 1 to 100 to guess which one I'm thinking about!" + " (6 guesses left.)");
for (var i=5; i>0; i--) {
if (i === 0) {
prompt("Out of guesses!" + " (" + i + " guesses left.)" + " My number was: " + targetNumber);
}
if (isNaN(userGuess) === true) {
userGuess = prompt("That value was not a number! Please pick a number from 1 to 100 to guess which one I'm thinking about!" + " (" + i + " guesses left.)");
}
if (userGuess < 1 || userGuess > 100) {
userGuess = prompt("That number was not between 1 and 100 inclusive! Please pick a number from 1 to 100 to guess which one I'm thinking about!" + " (" + i + " guesses left.)");
}
if (userGuess === targetNumber) {
userGuess = alert("You're correct! My number was: " + targetNumber);
}
if (userGuess < targetNumber) {
userGuess = prompt("You're too low, guess again" + " (" + i + " guesses left.)");
}
if (userGuess > targetNumber) {
userGuess = prompt("You're too high, guess again!" + " (" + i + " guesses left.)");
}
}
您正在将字符串值 prompt()
returns 与使用 ===
的数字进行比较。那是行不通的。
改为:
var userGuess = parseInt(prompt(...))
值得注意的是,prompt
是一种极其笨拙的方法。更好的做法是创建一个表单,其中包含适当的 <input>
字段和放置回复的位置。
只是想在我下班回家之前添加一个简短的注释。您的 for
循环将永远不允许 i === 0
条件通过,因为循环仅在 i > 0
时继续。您可能希望将其更改为 i >= 0
或在循环内调整您的条件。
我似乎无法让这段代码在找到正确答案时提醒用户,也无法让弹出窗口继续循环播放。我将其编码为学习练习。在 JS 中,我非常菜鸟。
有人可以审查我的代码并提供建设性的批评吗?
// noprotect
var targetNumber = Math.floor(Math.random() * 100 + 1);
var userGuess = prompt("Pick a number from 1 to 100 to guess which one I'm thinking about!" + " (6 guesses left.)");
for (var i=5; i>0; i--) {
if (i === 0) {
prompt("Out of guesses!" + " (" + i + " guesses left.)" + " My number was: " + targetNumber);
}
if (isNaN(userGuess) === true) {
userGuess = prompt("That value was not a number! Please pick a number from 1 to 100 to guess which one I'm thinking about!" + " (" + i + " guesses left.)");
}
if (userGuess < 1 || userGuess > 100) {
userGuess = prompt("That number was not between 1 and 100 inclusive! Please pick a number from 1 to 100 to guess which one I'm thinking about!" + " (" + i + " guesses left.)");
}
if (userGuess === targetNumber) {
userGuess = alert("You're correct! My number was: " + targetNumber);
}
if (userGuess < targetNumber) {
userGuess = prompt("You're too low, guess again" + " (" + i + " guesses left.)");
}
if (userGuess > targetNumber) {
userGuess = prompt("You're too high, guess again!" + " (" + i + " guesses left.)");
}
}
您正在将字符串值 prompt()
returns 与使用 ===
的数字进行比较。那是行不通的。
改为:
var userGuess = parseInt(prompt(...))
值得注意的是,prompt
是一种极其笨拙的方法。更好的做法是创建一个表单,其中包含适当的 <input>
字段和放置回复的位置。
只是想在我下班回家之前添加一个简短的注释。您的 for
循环将永远不允许 i === 0
条件通过,因为循环仅在 i > 0
时继续。您可能希望将其更改为 i >= 0
或在循环内调整您的条件。