Javascript 而即使条件满足,循环也不会停止

Javascript 而即使条件满足,循环也不会停止,javascript,arrays,while-loop,Javascript,Arrays,While Loop,功能: 用户是根据猜游戏输入颜色的。当答案错误时,“提示”将保持提示,只有在用户设置正确答案时,“提示”才会退出 我所做的: 已使用while循环检查状态。在while循环中,已将while循环设置为仅当其等效于目标且目标是系统随机拾取的颜色时才完成 问题: Prompt最初将颜色设置为答案,但即使在用户设置了正确答案后,Prompt仍会继续循环 设置一种颜色时如何退出循环 猜颜色游戏 函数do_game(){ var color=[“蓝色”、“青色”、“灰色”、“绿色”、“洋红”、“橙色”

功能:

用户是根据猜游戏输入颜色的。当答案错误时,“提示”将保持提示,只有在用户设置正确答案时,“提示”才会退出

我所做的: 已使用while循环检查状态。在while循环中,已将while循环设置为仅当其等效于目标且目标是系统随机拾取的颜色时才完成

问题: Prompt最初将颜色设置为答案,但即使在用户设置了正确答案后,Prompt仍会继续循环

设置一种颜色时如何退出循环


猜颜色游戏
函数do_game(){
var color=[“蓝色”、“青色”、“灰色”、“绿色”、“洋红”、“橙色”、“红色”、“白色”、“黄色”];
var guess\u input\u text,guess\u input,finished=false,
目标,猜测=0;
var目标指数=颜色[0,8];
目标=目标指数;
警报(目标);
当(!完成){
guess\u input\u text=prompt(“我想到了这些颜色:”+
“\n\n蓝色、青色、灰色、绿色、洋红、橙色、红色、白色、黄色”+“\n\n我在想什么颜色?”);
猜测输入=parseInt(猜测输入文本);
猜测+=1;
完成=目标;
}
}

尝试以下代码,如果输入与目标相同,则控制循环的每一轮,如果输入与目标相同,则“完成”变为真:

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

    var rnd = Math.floor((Math.random() * 9) + 0); //Makes a random number between 0 and 8
    target = color[rnd]; //sets the target to a random color from the color array
    while (!finished) {
      guess_input_text = prompt("I am thinking of these colors:" +
        "\n\n blue, cyan, gray, green, magenta, orange, red, white, yellow" + "\n\n what color am I thinking of?"); //gets alert-input from user
      guesses += 1;
      if(guess_input_text == target){//checks if input from user and target are the same
        finished = true;
      }
    }
  }

尝试以下代码,如果输入与目标相同,则控制循环的每一轮,如果输入与目标相同,则finished变为true:

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

    var rnd = Math.floor((Math.random() * 9) + 0); //Makes a random number between 0 and 8
    target = color[rnd]; //sets the target to a random color from the color array
    while (!finished) {
      guess_input_text = prompt("I am thinking of these colors:" +
        "\n\n blue, cyan, gray, green, magenta, orange, red, white, yellow" + "\n\n what color am I thinking of?"); //gets alert-input from user
      guesses += 1;
      if(guess_input_text == target){//checks if input from user and target are the same
        finished = true;
      }
    }
  }

另一种不用完成变量的方法。利用休息

var target_text = color[0, 8];
...
while (true) {
      guess_input_text = prompt("I am thinking of these colors:" +
        "\n\n blue, cyan, gray, green, magenta, orange, red, white, yellow" + "\n\n what color am I thinking of?");

      guesses += 1;
      if(guess_input_text == target_text){
       //guessed correct answer
       break;
      }
}

另一种不用完成变量的方法。利用休息

var target_text = color[0, 8];
...
while (true) {
      guess_input_text = prompt("I am thinking of these colors:" +
        "\n\n blue, cyan, gray, green, magenta, orange, red, white, yellow" + "\n\n what color am I thinking of?");

      guesses += 1;
      if(guess_input_text == target_text){
       //guessed correct answer
       break;
      }
}

你的代码并不是你想象的那样

它不获取随机值的索引,而是获取最后一个值

var target_index = color[0,8];
这将获得一个随机数组值: var rand=color[Math.floor(Math.random()*color.length)]

一旦你有了赢家的价值,做指数比较就没有意义了。您可以简单地比较字符串,因为prompt()返回输入响应的字符串(为简洁起见修改了提示文本)


你的代码并不是你想象的那样

它不获取随机值的索引,而是获取最后一个值

var target_index = color[0,8];
这将获得一个随机数组值: var rand=color[Math.floor(Math.random()*color.length)]

一旦你有了赢家的价值,做指数比较就没有意义了。您可以简单地比较字符串,因为prompt()返回输入响应的字符串(为简洁起见修改了提示文本)



您永远不会修改
finished
变量。您需要在某个时间点将finished=true设置为中断循环。为什么你的行“finished=check_guess();”被注释了?您需要在该函数中添加条件并返回布尔值。您应该首先实现check_guess函数,然后只有我们可以帮助您。@zerkms更新了question@SwarnenduPaul更新了您从未修改过的问题
finished
变量。您需要在某个时间点将finished=true设置为中断循环。为什么你的行“finished=check_guess();”被注释了?您需要在该函数中添加条件并返回布尔值。您应该首先实现check_guess函数,然后只有我们可以帮助您。@zerkms更新了question@SwarnenduPaul更新了问题循环仍然在循环,即使在输入了正确的答案之后等待,我也会做一个JSFIDLE来检查。我希望它可以工作,但我无法测试它,因为我的浏览器不会发出警报。这应该可以工作。ealier target=颜色[0,8],评估为target=“黄色”。但是在比较的时候,目标是和INT比较的!!!我想知道为什么我不能将以下内容设置为
var target_index=color[0,8];目标=目标指数?即使输入了正确的答案,循环仍然会一直循环。等待,我将制作一个JSFIDLE进行检查。我希望它可以工作,但我无法测试它,因为我的浏览器不会发出警报。这应该可以工作。ealier target=颜色[0,8],评估为target=“黄色”。但是在比较的时候,目标是和INT比较的!!!我想知道为什么我不能将以下内容设置为
var target_index=color[0,8];目标=目标指数??