Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript游戏输出错误_Javascript - Fatal编程技术网

Javascript游戏输出错误

Javascript游戏输出错误,javascript,Javascript,我刚刚完成了一些关于“CodeAcademy”的练习,它教会我制作一个石头、布和剪刀的游戏。除了我想要接收的输出之外,一切都正常。我不是在说“纸赢”。我得到的只是“纸”。我刚刚开始掌握JavaScript的基础,这就是为什么我还不是一个强大的脚本编写者。 var userChoice = prompt("Do you choose rock, paper or scissors?"); var computerChoice = Math.random(0); if (computerChoic

我刚刚完成了一些关于“CodeAcademy”的练习,它教会我制作一个石头、布和剪刀的游戏。除了我想要接收的输出之外,一切都正常。我不是在说“纸赢”。我得到的只是“纸”。我刚刚开始掌握JavaScript的基础,这就是为什么我还不是一个强大的脚本编写者。
var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random(0);

if (computerChoice < 0.34) {
    computerChoice = "rock";
} else if(computerChoice <= 0.67) {
    computerChoice = "paper";
} else {
    computerChoice = "scissors";
} 

console.log("Computer: " + computerChoice);

var compare = function(choice1, choice2) {
    if(choice1 === choice2) {

        return ("The result is a tie!");
    }

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

};
var userChoice=prompt(“您选择石头、布还是剪刀?”);
var computerChoice=Math.random(0);
如果(计算机选择<0.34){
computerChoice=“rock”;

}否则如果(computerChoice我认为您在选择选项时调用了compare函数。因此,您正在向函数发送用户选择。现在,您应该将其与computerChoice进行比较。这里有什么选择?

正如其他人所说,您从未调用过比较函数,也从未返回过该函数的任何值。即使您这样做了,也不会返回该函数的任何值无论如何,r函数大部分时间都会失败

您可以选择以下结构:

if (choice1 === "paper") {
    if (choice2 === "rock") {
        return "paper wins";
    } else {
        if (choice2 === "scissors") {
            return "scissors wins";
        }
    }
    if (choice1 === "scissors") { //is never true because choice1 is always "paper"
        if (choice2 === "rock") {
            return "rock wins";
        } else {
            if (choice2 === "paper") {
                return "scissors wins";
            }
        }
    }
} //if choice1 === "paper" ends here
//no love for the rock?
您想要实现的目标:

 if (choice1 === "paper") {
        if (choice2 === "rock") 
        {
            return "paper wins";
        } 
        else if (choice2 === "scissors") 
        {
            return "scissors wins";
        }
 } 
 else if (choice1 === "scissors")
 {
       if (choice2 === "rock") 
       {
           return "rock wins";
       } 
       else if (choice2 === "paper") 
       {
           return "scissors wins";
       }
 }
 else if (choice1 === "rock") //don't forget the rock
 {
       if (choice2 === "paper") 
       {
           return "paper wins";
       } 
       else if (choice2 === "scissors") 
       {
           return "rock wins";
       }
 }
然后您必须像这样调用您的函数:

var result = compare(userChoice, computerChoice);
然后记录
结果
变量。在您的示例中,您记录的
计算机选择
只能是“纸”、“剪刀”或“石头”,因为这是您给它的值,而不是函数的值


由于您允许用户键入他/她想要的任何内容,您显然还必须验证他们的输入,否则if/else结构将失败。

代码的行为符合设计要求——您记录的是
computerChoice
,而不是
compare()
返回的值。您的代码从不调用
compare()
函数。简单地声明一个函数只会使它可用-它在被调用之前实际上不会做任何事情。