【发布时间】:2014-03-09 13:38:26
【问题描述】:
我正在构建一个游戏,其中计算机生成一个随机数 (1-100),用户必须猜出正确的数字。目标是让计算机将当前的猜测与之前的猜测进行比较,并吐出一条语句:“hot”、“cold”、“hotter”、“colder”等。
我的代码(专注于 JS):CodePen fiddle
//global variables--computer generated guess, and guess log
var answer = Math.floor((Math.random() * 100)+1);
var guessArray = [];
var index = 0;
//user clicks submit button and guess is registered by computer
$("#submit").click( function(){
var guess = $("#guess").val();
guessArray.push(guess);
//prints out the answer and user guesses
$("#answer").text("Answer:" + " "+ answer);
$("#guessArrayPrint").text("You guessed: " + " " + guessArray + " ");
if (answer === guess) {
$("#statement").text("woo hoo right answer");
} else {
var currentDifference = Math.abs(answer-guess);
var currentDiffArray = [];
currentDiffArray.push(currentDifference);
if (index = 0) {
//if-else statement comparing current guess range to answer
if ( currentDifference >=1 && currentDifference <= 10){
$("#statement").text("Ouch! You're hot!");
} else {
$("#statement").text("Brr! You're cold!");
}
} else {
//if-else statement comparing current guess to previous guess
var previousDiff = answer- prevguess;
var prevguess = guessArray [i-1];
if( previousDiff < currentDifference){
$("#statement").text("Ahh! Getting Warmer!");
} else {
$("#statement").text("Brrr...getting colder");
}
}
index++
}
});
我的嵌套 if-else 语句不起作用。当用户输入猜测时,无论答案有多接近,它总是返回语句“brr.. getting colder”,它位于“else”部分。
理想情况下,当用户输入他们的第一个猜测时,if (index = 0) 应该运行,然后当输入第二个猜测时,它应该移动到带有先前猜测变量的“else”语句。我尝试移动变量,更改 if/else 的顺序,并认为可能是 index++ 的位置。没有任何工作。不确定我的变量、数组或 if/else 语句的语法是否有问题。
tl;dr:当程序运行时,仅运行嵌套的if-else 语句的“else”部分。不知道如何解决……我已经多次检查了我的代码。语法、数组和变量。不确定出了什么问题。
【问题讨论】:
-
"200" !== 200。您需要parseInt(guess, 10)或var guess = parseInt($("#guess").val(), 10);。 -
if (index = 0) { 应该是 if(index==0){
标签: javascript arrays if-statement nested