如果答案不正确,如何让用户重新制作功能

时间:2016-02-09 18:41:41

标签: javascript

我想给用户一个问题。向左,向右或继续直行。如果用户在javascript prompt方法中“直截了当”。其他两种方法都是假的 - 游戏结束。什么时候游戏结束我希望用户再次制作这个故事。

var prompt = propmt("Where will you go? Left, right or continue straight?");
if (prompt === "Left") {
  confirm("Game over, the tigers will eat you!");
} else if (where === "Straight") {
  confirm("You've won!");
} else {
  confirm("Game over, you've fallen to the river!");
}

如果gameOver比我想要用户重试故事。 谢谢!

链接到JsFiddle https://jsfiddle.net/grqxc5kr/

3 个答案:

答案 0 :(得分:1)

将其嵌入循环中。

这里也有一些风格意见。

您可能希望将变量“prompt”重命名为它实际表示的内容,这是提示函数调用的返回值,或者更简单地说是用户输入。

在您的条件中,您只是将该变量的值与潜在的选择进行比较。这是用switch / case块替换if / else if / else的好地方。如果您根据用户未来的输入选择不同的操作,也可以更容易扩展。这不仅可以提高开发速度,而且在大多数语言中,这也会带来轻微的性能提升。

答案 1 :(得分:1)

这样的事情会起作用:

function game() {
  while (true) {
    var prompt = prompt("Where will you go? Left, right or continue straight?");

    if (prompt === "Left") {
      confirm("Game over, the tigers will eat you!");
    } else if (prompt === "Straight") {
      confirm("You've won!");
      return
    } else {
      confirm("Game over, you've fallen to the river!");
    }
  }
}

这不是这种方式(注意while(true)),但这会让你得到最终结果。

更好的方法:

function game() {
  var prompt = ""
  while (prompt != "Left" || prompt != "Straight") {
    prompt = prompt("Where will you go? Left, right or continue straight?");
    if (prompt === "Left") {
      confirm("Game over, the tigers will eat you!");
    } else if (prompt === "Straight") {
      confirm("You've won!");
    } else {
      confirm("Game over, you've fallen to the river! Let's play again!");
    }
  }
}

答案 2 :(得分:0)

递归会做你想要的:

function getDirection(){
    var input = prompt("Where will you go? Left, right or continue straight?");
    if (input === "Left") {
        confirm("Game over, the tigers will eat you!");
        getDirection();
    } else if (input === "Straight") {
        confirm("You've won!");
    } else {
        confirm("Game over, you've fallen to the river!");
        getDirection();
  }
}
getDirection();