2014-02-11 137 views
2

我正在构建的是一个游戏,其中计算机生成一个随机数(1-100),用户必须猜出正确的数字。我们的目标是让电脑比较目前的猜测与之前的猜测,并且吐出一个声明:“热”,“冷”,“热”,“较冷”等。嵌套的If-else语句被跳过

My Code(focus on the 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 ..变得更冷”,它位于“else”部分。

理想情况下,当用户输入他们的第一个猜测if (index = 0)应该运行,然后当输入第二个猜测时,它应该移动到带有先前猜测变量的“else”语句。我试着围绕变量移动,改变了if/else的顺序,并且认为它可能是index++的位置。没有任何工作。不知道我的变量,数组或if/else语句的语法是否有问题。

TL;博士:仅运行该程序时嵌套if-else语句的“else”部分运行。不知道如何解决......我经历了很多次我的代码。语法,数组和变量。不确定有什么问题。

+0

'“200”!== 200'。你需要'parseInt(guess,10)'或'var guess = parseInt($(“#guess”).val(),10);'。 – tenub

+0

if(index = 0){should if if(index == 0){ – ltalhouarne

回答

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。我遇到了一些场景,而小提琴真的只有在您给应用程序正确的答案时才有用。该代码有许多语法错误,错误的参考和计算。我会建议打开控制台或调试器,确定这些问题并修复它们。

这是一个Fully Functional Demo

+0

问题是因为它不属于初始if语句。 – Bic

+0

他/你在使用之后定义并声明'prevguess'。 – user13500