2016-03-05 62 views
2

我是JavaScript的newby。我只是不明白爲什麼這有時會給錯誤的贏家。它說Rock在用戶選擇Rock並且計算機選擇Paper時獲勝。其他幾個組合也出錯了。任何人都可以告訴我哪裏出錯了?謝謝!Rock Paper Scissors Lizard Spock遊戲邏輯偶爾輸出錯誤的贏家,我無法分辨爲什麼

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); 

回答

2

你犯了幾次相同的錯誤。以第一個爲例。這:

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

...含義:

IF

  • 選擇2 === 「剪刀」 是一種真正的價值
  • 「蜥蜴」 是一個真正的值

...和「蜥蜴」將總是是一個真正的價值。

你需要充分描述的條件:

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

...或使用數組

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

謝謝!這很有道理! –