Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
191 views
in Technique[技术] by (71.8m points)

javascript - what wrong with this paper and rock mini game?

It return no error but I sense something wrong in codeacademy's console. It return single string - "rock", "paper" or "scissors". I couldn't detect what's wrong.

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";
}

function compare(choice1, choice2){
    if(choice1 == choice2) return "The result is a tie!";

    if(choice1 == "rock"){
        if(choice2 =="scissors") return "rock wins" 
        else return "paper wins";
    }

        if(choice1 == "paper"){
        if(choice2 =="scissors") return "scissors wins" 
        else return "paper wins";
    }

        if(choice1 == "scissors"){
        if(choice2 =="paper") return "scissors wins" 
        else return "rock wins";
    }

    compare(userChoice, computerChoice);

}

Any bug in the logic and the program flow?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
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";
}

function compare(choice1, choice2){
    if(choice1 == choice2) return "The result is a tie!";

    if(choice1 == "rock"){
        if(choice2 =="scissors") return "rock wins" 
        else return "paper wins";
    }

    if(choice1 == "paper"){
        if(choice2 =="scissors") return "scissors wins" 
        else return "paper wins";
    }

    if(choice1 == "scissors"){
        if(choice2 =="paper") return "scissors wins" 
        else return "rock wins";
    }
}

compare(userChoice, computerChoice);

You were calling compare() inside the definition of compare.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...