在 JavaScript 中构建“石头、纸、剪刀”

Build “rock, paper, scissors” in JavaScript

本文关键字:剪刀 石头 JavaScript 构建      更新时间:2023-09-26

这是代码。搭建"石头、纸、剪刀"

var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} 
else if(computerChoice <= 0.67) {
computerChoice = "paper";
} 
else {
computerChoice = "scissors";
}
console.log("Computer: " + computerChoice);
var compare = function(choice1,choice2) {
if (choice1 === choice2) {
    return "The result is a tie!"
}
else if (choice1 === "rock") {
    if (choice2 === "scissors") {
        return "rock wins"
    }
    else {
        return "paper wins"
    }
}     compare(userChoice,computerChoice); //I forget to add it. Now I add it.

我不明白为什么我需要添加else { return "paper wins" }

===运算符是JavaScript中的严格相等运算符。 有问题的if语句正在对choice1和字符串文字"rock"进行比较。 如果该答案为真,则执行下一个if语句,程序检查choice2是否等于 "scissors" 。 如果这句话是真的,那么它就会返回"rock wins"因为众所周知,摇滚打败了剪刀。

我不明白为什么我需要添加其他{返回"纸张获胜"}

这是因为这个游戏有 3 种不同的情况,它们是(假设我选择摇滚):

  1. 对手选择摇滚=>平局
  2. 对手选择剪刀=>我赢
  3. 对手选择纸张=>对手获胜

如果choice1"rock"choice2不是(else"scissors"那么choice2可能是"paper"的,也可以是"rock"的。既然没有平局,choice2就不能"rock",所以choice2"paper""paper""rock",所以"paper wins"

编辑

由于 return 语句会立即退出函数,以防

    if (choice2 === "scissors") {
        return "rock wins" // <-- quit the function
    }
    // <-- if you got here it is not true that (choice2 === "scissors")
    return "paper wins"

这意味着您可以避免else,只需return "paper wins"