Javascript中的颜色猜测反复给出;“不识别颜色”;错误

Javascript中的颜色猜测反复给出;“不识别颜色”;错误,javascript,Javascript,我试图用JavaScript创建一个简单的颜色猜测游戏,但是程序的代码工作不正常。虽然我创建了其他条件来识别不同的用户输入并显示不同的警报消息,但它仍停留在第一个条件下并返回相同的警报(“对不起,我不认识您的颜色。请重试”)。当猜测输入与程序第一部分生成的随机颜色匹配时,程序还应该将html页面的背景颜色更改为正确的颜色 代码如下: var target; var color = ["blue", "green", "orange", "red", "white", "yellow"];

我试图用JavaScript创建一个简单的颜色猜测游戏,但是程序的代码工作不正常。虽然我创建了其他条件来识别不同的用户输入并显示不同的警报消息,但它仍停留在第一个条件下并返回相同的警报(“对不起,我不认识您的颜色。请重试”)。当猜测输入与程序第一部分生成的随机颜色匹配时,程序还应该将html页面的背景颜色更改为正确的颜色

代码如下:

 var target;
 var color = ["blue", "green", "orange", "red", "white", "yellow"];
 var guess_input_text;
 var guess_input;
 var finished = false;
 var guesses = 0;

 function do_game() {

   var random_color = color[Math.floor(Math.random()*color.length)];
   target = random_color;

   while (!finished) {
     guess_input_text = prompt("I am thinking of one of these colors: "+
                           "blue, green, orange, red, white, yellow. " +
                           "What color am I thinking of?");
     guess_input = parseInt(guess_input_text);
     guesses += 1;
     finished = check_guess();
   }

 }

 function check_guess() {

     if (guess_input != color) {
       alert("Sorry, I don't recognize your color. " +
             "Please try again.");
       return false;
     }
     if (guess_input > target) {
       alert("Sorry, your guess is not correct! " +
             "Hint: your color is alphabetically higher than mine. " +
             "Please try again.");
       return false;
     }
     if (guess_input < target) {
       alert("Sorry, your guess is not correct! " +
             "Hint: your color is alphabetically lower than mine. " +
             "Please try again.");
       return false;
     }
     if (guess_input == target) {
     myBody = document.getElementsByTagName("body")[0];
     myBody.style.background = "target" ;
       alert("Congratulations! You have guessed the color! " +
             "It took you " + guesses + "guesses to finish the game. " +
             "You can see the color in the background.");
       return true;
     }

 }
var目标;
var color=[“蓝色”、“绿色”、“橙色”、“红色”、“白色”、“黄色”];
变量猜测输入文本;
var-u输入;
var finished=false;
var猜测=0;
函数do_game(){
var random_color=color[Math.floor(Math.random()*color.length)];
目标=随机颜色;
当(!完成){
guess\u input\u text=prompt(“我想到的是其中一种颜色:”+
“蓝色、绿色、橙色、红色、白色、黄色。”+
“我在想什么颜色?”;
猜测输入=parseInt(猜测输入文本);
猜测+=1;
完成=检查猜测();
}
}
函数检查_guess(){
如果(猜测输入!=颜色){
提醒(“对不起,我不认识你的颜色。”+
“请再试一次。”);
返回false;
}
如果(猜测输入>目标){
警告(“对不起,您的猜测不正确!”+
“提示:你的颜色按字母顺序比我的高。”+
“请再试一次。”);
返回false;
}
如果(猜测输入<目标){
警告(“对不起,您的猜测不正确!”+
“提示:你的颜色按字母顺序比我的低。”+
“请再试一次。”);
返回false;
}
如果(猜测输入==目标){
myBody=document.getElementsByTagName(“正文”)[0];
myBody.style.background=“target”;
警告(“祝贺你!你猜对颜色了!”+
“你花了“+猜测+”猜测才完成游戏。”+
“你可以在背景中看到颜色。”);
返回true;
}
}
我想发布这个问题,看看是否有人有我可以用来修复这个程序的解决方案。提前谢谢

您的问题在于:

if (guess_input != color)
颜色是一个数组。您需要遍历数组中的元素并确保guess_输入不是这些元素之一,而不是检查整个数组是否相等

您还假设guess_input_text为整数,并将guess_input初始化为整数:

guess_input = parseInt(guess_input_text);
如果要将用户的答案与字符串(颜色名称)进行比较,当然不能期望用户的答案是整数

if (guess_input_text !== color) {

假设提示答案是字符串,这应该匹配。

我在代码中看到一些错误

  • 不需要使用
    parseInt(猜测\u输入\u文本)
    ,因为输入不是数字
  • 如果(guess\u input!=color){
    这是不正确的,因为color是一个
    数组
    ;这里您需要检查
    guess\u input
    是否存在于
    color
    数组中
以下是解决方案。请查看我的代码:-

        var target;
        var color = ["blue", "cyan", "gray", "green", "magenta", "orange", "red", "white", "yellow"].sort();
        var guess_input_text;
        var guess_input;
        var finished = false;
        var guesses = 0;

        function do_game() {

            var random_color = color[Math.floor(Math.random() * color.length)]; // Get a Random value from array
            target = random_color.toLowerCase();
            while (!finished) {
                guess_input_text = prompt("I am thinking of one of these colors:- \n\n" + 
                                           color.join(", ") + 
                                          ".\n\nWhat color am I thinking of?");
                guess_input = guess_input_text.toLowerCase();
                guesses += 1;
                finished = check_guess();
            }

        }

        function check_guess() {

            if (color.indexOf(guess_input) === -1) {
                alert("Sorry, I don't recognize your color. \n\n" +
                      "Please try again.");
                return false;
            }
            if (guess_input > target) {
                alert("Sorry, your guess is not correct! \n\n" +
                      "Hint: your color is alphabetically higher than mine. \n\n" +
                      "Please try again.");
                return false;
            }
            if (guess_input < target) {
                alert("Sorry, your guess is not correct! \n\n" +
                      "Hint: your color is alphabetically lower than mine. \n\n" +
                      "Please try again.");
                return false;
            }
            if (guess_input === target) {

                myBody=document.getElementsByTagName("body")[0];
                myBody.style.background = target;

                alert("Congratulations! You have guessed the color! \n\n" +
                      "It took you " + guesses + " guesses to finish the game. \n\n" +
                      "You can see the color in the background.");
                return true;
            }

        }
var目标;
var color=[“蓝色”、“青色”、“灰色”、“绿色”、“洋红”、“橙色”、“红色”、“白色”、“黄色”]。排序();
变量猜测输入文本;
var-u输入;
var finished=false;
var猜测=0;
函数do_game(){
var random_color=color[Math.floor(Math.random()*color.length)];//从数组中获取一个随机值
target=random_color.toLowerCase();
当(!完成){
guess\u input\u text=prompt(“我想到的是这些颜色之一:-\n\n”+
颜色.连接(“,”)+
“\n\n我在想什么颜色?”);
guess_input=guess_input_text.toLowerCase();
猜测+=1;
完成=检查猜测();
}
}
函数检查_guess(){
if(颜色索引of(猜测输入)=-1){
警报(“对不起,我不认识您的颜色。\n\n”+
“请再试一次。”);
返回false;
}
如果(猜测输入>目标){
警报(“对不起,您的猜测不正确!\n\n”+
“提示:您的颜色按字母顺序比我的高。\n\n”+
“请再试一次。”);
返回false;
}
如果(猜测输入<目标){
警报(“对不起,您的猜测不正确!\n\n”+
“提示:您的颜色按字母顺序比我的低。\n\n”+
“请再试一次。”);
返回false;
}
如果(猜测输入===目标){
myBody=document.getElementsByTagName(“正文”)[0];
myBody.style.background=目标;
警报(“祝贺您!您猜对了颜色!\n\n”+
完成游戏需要“+猜测+”猜测。\n\n+
“你可以在背景中看到颜色。”);
返回true;
}
}

请查看!如果您有任何问题,请告诉我。希望一切正常。

您正在提示用户输入字符串,您可以将其转换为整数(可能是
NaN
)然后将其与数组进行比较。当然它们是不同的。下面是进一步编码的提示:为函数提供参数,因为依赖全局变量是不好的做法。函数应该只依赖于在执行时提供的参数;)
guess\u input
is
parseInt(prompt())
。和
color
数组不包含整数。