我试图在playFiveTimes函数中调用getWinner函数,每次我尝试测试我的代码时都会给出一个错误,上面写着:“playerMove undefined”或者如果我尝试输入“rock”它会说是未定义的同样。在这一点上我完全迷失了。任何帮助将不胜感激。
'use strict';
function getInput() {
console.log("Please choose either 'rock', 'paper', or 'scissors'.")
return prompt();
}
function randomPlay() {
var randomNumber = Math.random();
if (randomNumber < 0.33) {
return "rock";
} else if (randomNumber < 0.66) {
return "paper";
} else {
return "scissors";
}
}
function getPlayerMove(move) {
if (!move) {
move = getInput();
}
return move;
}
function getComputerMove(move) {
if (!move) {
move = getInput();
}
return move;
}
function getWinner(playerMove, computerMove) {
var winner;
if (playerMove === computerMove) {
return ("It's a tie!");
} else if (playerMove === "rock") {
if (computerMove === "paper") {
return "paper wins";
} else {
return "rock wins";
}
} else if (playerMove === "paper") {
if (computerMove === "rock") {
return "paper wins";
} else {
return "scissors wins";
}
} else if (playerMove === "scissors") {
if (computerMove === "paper") {
return "scissors wins";
} else {
return "rock wins";
}
}
return winner;
}
function playToFive() {
console.log("Let's play Rock, Paper, Scissors");
var playerWins = 0;
var computerWins = 0;
// Write code that plays 'Rock, Paper, Scissors' until either the player or the computer has won five times.
while ((playerWins < 5) && (computerWins < 5)) {
getWinner();
if (playerWins) {
playerWins += 1
} else {
computerWins += 1
}
}
console.log("Player chose " + playerMove + " while computer chose " + computerMove);
console.log("The score is currently " + playerWins + " to " + computerWins + "\n");
return [playerWins, computerWins];
}
console.log(playToFive());
答案 0 :(得分:0)
您正在调用没有参数的函数。它需要两个参数,如您所指定的function getWinner(playerMove, computerMove) {...}
。因此,在函数调用中提供两个参数,即getWinner('rock', 'paper')
。该程序只做你所说的。您无法在没有参数的情况下调用getWinner()
并期望得到结果。
其次,同一函数中的变量winner
没有用处。你根本不使用它,除非在没有赢家的情况下返回它。这是违反直觉的。
第三,您永远不会在playerMove
函数中定义computerMove
和playToFive()
,也不会为它们分配值。
调试和检查代码有助于您轻松地了解这些事实。
答案 1 :(得分:0)
您的脚本在此行崩溃:
console.log("Player chose " + playerMove + " while computer chose " + computerMove);
在你的playToFive()函数中,因为playerMove
和computerMove
变量是未定义的,但你试图将它强制转换为字符串。您需要在使用之前定义变量。
这就是“playerMove undefined”错误的原因,但你也应该检查你的程序的逻辑,就像之前Brett和Ivern所说的那样
答案 2 :(得分:-2)
我认为BIGGEST错误在函数内部执行函数,请尝试:
if(playerMove ===“rock”)| (computerMove ===“paper”){ 返回“纸胜”; }
我可能有用的东西。 “|”意思是,你可能知道,但我不确定