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

Javascript 石头剪刀蜥蜴斯波克游戏逻辑偶尔输出错误的赢家,我可以';我不知道为什么,javascript,Javascript,我是JavaScript的新手。我只是不明白为什么有时候这会给错误的赢家。它说,当用户选择摇滚乐,电脑选择纸张时,摇滚乐获胜。其他几个组合也出现了错误。谁能告诉我哪里出错了?谢谢 var userChoice = prompt("Do you choose Rock, Paper, Scissors, Lizard or Spock?"); var computerChoice = Math.random(); if (computerChoice < 0.21) { comput

我是JavaScript的新手。我只是不明白为什么有时候这会给错误的赢家。它说,当用户选择摇滚乐,电脑选择纸张时,摇滚乐获胜。其他几个组合也出现了错误。谁能告诉我哪里出错了?谢谢

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);
var userChoice=prompt(“您选择石头、布、剪刀、蜥蜴还是斯波克?”);
var computerChoice=Math.random();
如果(计算机选择<0.21){
computerChoice=“Rock”;
}否则如果(computerChoice>0.20&&computerChoice<0.41){
computerChoice=“纸张”;
}否则如果(computerChoice>0.40&&computerChoice<0.61){
computerChoice=“剪刀”;
}否则如果(computerChoice>0.60&&computerChoice<0.81){
computerChoice=“蜥蜴”;
}否则{
computerChoice=“Spock”;
}
log(“玩家选择:”+userChoice);
console.log(“计算机选择:”+computerChoice);
功能比较(选项1、选项2){
如果(选项1==选项2){
log(“结果是平局!”);
}否则如果(选项1==“岩石”){
如果(选项2==“剪刀”| |“蜥蜴”){
日志(“摇滚乐赢了!”);
}否则如果(选项2==“纸张”){
日志(“纸赢了!”);
}否则{
console.log(“斯波克赢了”);
}
}else if(选项1==“纸张”){
如果(选项2==“摇滚乐”| |“斯波克”){
日志(“纸赢了!”);
}否则如果(选项2==“剪刀”){
日志(“剪刀赢了!”);
}否则{
log(“蜥蜴赢了!”);
}
}否则如果(选项1==“剪刀”){
如果(选项2==“纸”| |“蜥蜴”){
日志(“剪刀赢了!”);
}否则如果(选项2==“岩石”){
日志(“摇滚乐赢了!”);
}否则{
log(“斯波克赢了!”);
}
}else if(选项1==“蜥蜴”){
如果(选项2==“纸张”| |“Spock”){
log(“蜥蜴赢了!”);
}否则如果(选项2==“岩石”){
日志(“摇滚乐赢了!”);
}否则{
log(“斯波克赢了!”);
}
}else if(选项1==“Spock”){
如果(选项2==“岩石”| |“剪刀”){
log(“斯波克赢了!”);
}否则如果(选项2==“纸张”){
日志(“纸赢了!”);
}否则{
log(“蜥蜴赢了!”);
}
}
}
比较(用户选择、计算机选择);

您多次犯相同的错误。以第一个为例。这:

……是指:

如果

  • choice2==“剪刀”为真值或
  • “蜥蜴”是一个真正的价值观
…而“蜥蜴”永远是真正的价值观

您需要充分描述该情况:

choice2 === "Scissors" || choice2 === "Lizard"
…或使用数组

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

谢谢这很有道理!
["Scissors", "Lizard"].indexOf(choice2) > -1