-1

我刚开始学习 JavaScript,我正在尝试改进我构建的“Rock, Scissors, Paper”游戏(参见下面的代码)。

我尝试在没有最后一个函数 input() 的情况下构建游戏。但我了解到我只能在函数中使用“return”。当我使用 console.log() 打印函数时,它在没有 input() 函数的情况下工作。

我想了解如何使用 input() 函数来做到这一点,以及如何在 input() 中调用 gamePlay()。任何帮助将不胜感激。

var gamePlay = function (userGameChoice) {
    var computerChoice = Math.random(0, 1);
    if (computerChoice < 0.34) {
        computerChoice = "rock";
    } else if (computerChoice <= 0.67) {
        computerChoice = "paper";
    } else {
        computerChoice = "scissors";
    }
    var compare = function (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 === "rock") {
                return "paper wins";
            } else {
                return "scissors wins";
            }
        }
        if (choice1 === "scissors") {
            if (choice2 === "rock") {
                return " rock wins";
            } else {
                return "scissors wins"
            }
        }
    }

    compare(userGameChoice, computerChoice);

}

var input = function (userChoice) {
    if (userChoice === "rock") {
        return gamePlay("rock");
    } else if (userChoice === "paper") {
        return gamePlay("paper");
    } else if (userChoice === "scissors") {
        return gamePlay("scissors");
    } else {
        return "Invalid input";
    }
}
input(prompt("Do you choose rock, paper or scissors?"));
4

2 回答 2

1

您的gamePlay函数不返回值。它调用comparewhich 确实返回了一个值,但是因为gamePlay没有 return 语句,它实际上是 return undefined

如果你去console.log(gamePlay("rock"));你会看到undefined的。

旁注:输入函数也可以使用 switch 语句而不是 if/then/elses。

于 2013-11-12T04:02:44.563 回答
-1

我想你想做这样的事情:

var options    = ["rock", "scissors", "paper"];
var userinput  = prompt("Do you choose rock, paper or scissors?");
var gameResult = "Invalid Input";

if (options.indexOf(userinput) > -1) {
    gameResult = gamePlay(userinput);
}

alert(gameResult);

这将获取用户输入并将其与有效选项列表进行比较。如果它存在 ( >-1) 那么它将运行该gamePlay方法,并将结果存储在变量中gameResult

于 2013-11-12T04:01:30.933 回答