我正在构建的是计算机生成随机数(1-100)并且用户必须猜出正确数字的游戏。目标是让计算机将当前猜测与之前的猜测进行比较并吐出一个声明:“热”,“冷”,“更热”,“更冷”等。
我的代码(专注于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 :运行程序时,只运行嵌套else
语句的“if-else
”部分。不确定如何修复...我已经多次查看了我的代码。语法,数组和变量。不确定是什么问题。
答案 0 :(得分:1)
你JS有if (index = 0)
。这应该是if (index === 0)
。
此外,您需要将输入字段的值转换为数字。您可以使用以下方式执行此操作:
var guess = +$("#guess").val(); // + cast as a number
更多语法错误:
prevguess = guessArray[i - 1] --> prevguess = guessArray[index - 1];
这是部分工作Fiddle。我经历了一些场景,如果你给应用程序正确的答案,小提琴真正起作用。代码有很多语法错误,错误的引用和计算。我建议打开控制台或调试器,识别这些问题,并修复它们。