石头剪刀布蜥蜴斯波克游戏逻辑偶尔输出错误的赢家,我不知道为什么



我是JavaScript的新手。我只是想不通为什么有时会给错误的赢家。它说当用户选择Rock而计算机选择Paper时,Rock获胜。其他几种组合也出现了错误。谁能说出我哪里做错了?谢谢!

var userChoice = prompt("Do you choose Rock, Paper, Scissors, Lizard or Spock?");
var computerChoice = Math.random();
if (computerChoice < 0.21) {
    computerChoice = "Rock";
} else if(computerChoice > 0.20 && computerChoice < 0.41) {
    computerChoice = "Paper";
} else if(computerChoice >0.40 && computerChoice < 0.61) {
    computerChoice = "Scissors";
} else if(computerChoice > 0.60 && computerChoice < 0.81) {
    computerChoice = "Lizard";
} else {
    computerChoice = "Spock";
}
console.log("The player chooses: " + userChoice);
console.log("The computer chooses: " + computerChoice);
function compare(choice1, choice2) {
    if(choice1 === choice2) {
        console.log("The result is a tie!");
    } else if(choice1 === "Rock") {
        if(choice2 === "Scissors" || "Lizard") {
            console.log("Rock wins!");
        } else if(choice2 === "Paper") {
            console.log("Paper wins!"); 
        } else {
            console.log("Spock wins");
        }
    } else if(choice1 === "Paper") {
        if(choice2 === "Rock" || "Spock") {
            console.log("Paper wins!");
        } else if(choice2 === "Scissors") {
            console.log("Scissors wins!");
        } else {
            console.log("Lizard wins!");
        }
    } else if(choice1 === "Scissors") {
        if(choice2 === "Paper" || "Lizard") {
            console.log("Scissors wins!");
        } else if(choice2 === "Rock") {
            console.log("Rock wins!");
        } else {
            console.log("Spock wins!");
        }
    } else if(choice1 === "Lizard") {
        if(choice2 === "Paper" || "Spock") {
            console.log("Lizard wins!");
        } else if(choice2 === "Rock") {
            console.log("Rock wins!");
        } else {
            console.log("Spock wins!");
        }
    } else if(choice1 === "Spock") {
        if(choice2 === "Rock" || "Scissors") {
            console.log("Spock wins!");
        } else if(choice2 === "Paper") {
            console.log("Paper wins!");
        } else {
            console.log("Lizard wins!");
        }
    }
}
compare(userChoice, computerChoice);

你已经犯了好几次同样的错误。以第一个为例。这:

if(choice2 === "Scissors" || "Lizard") {

。方法:

如果

  • 选择2 === "剪刀"是一个真正的值
  • "蜥蜴"是真正的价值

。而"蜥蜴"将永远是一个真正的价值。

您需要完整描述病情:

choice2 === "Scissors" || choice2 === "Lizard"

。或使用数组

["Scissors", "Lizard"].indexOf(choice2) > -1

最新更新