Console.log未显示Odin项目的Rock,Paper,Scissors练习的预期输出



我正在为奥丁项目创建一个石头剪刀游戏(https://www.theodinproject.com/lessons/foundations-rock-paper-scissors)。我想我大部分时间都在那里,但项目的最后一步是计算分数并展示获胜者。

我将在下面附上所有代码,并解释我认为问题所在:

let choices = ["Rock", "Paper", "Scissors"]
let computerSelection = getComputerChoice();
let rockRegex = /rock/i;
let paperRegex = /paper/i;
let scissorsRegex = /scissors/i;
let result = "";
function getPlayerChoice() {
prompt("Rock, Paper, Scissors? ")
}
function getComputerChoice() {
let computerChoice = choices[Math.floor(Math.random()*choices.length)];
// console.log(computerChoice);
return computerChoice;
}
let playerScore = 0;
let computerScore = 0;
function playRound(playerSelection, computerSelection) {
if (rockRegex.test(playerSelection)) {
if (computerSelection == "Rock") {
console.log(computerScore);
return result = "It's a draw! You both had Rock";
} else if (computerSelection == "Paper") {
// add score to computer since it won
computerScore++;
console.log(computerScore);
return result = "You lose! Paper beats Rock";
} else if (computerSelection == "Scissors") {
// add score to player since you won
playerScore++;
console.log(computerScore);
return result = "You win! Rock beats Scissors";
}
} else if (paperRegex.test(playerSelection)) {
if (computerSelection == "Rock") {
// add score to player since you won
playerScore++;
console.log(computerScore);
return result = "You win! Paper beats Rock";
} else if (computerSelection == "Paper") {
console.log(computerScore);
return result = "It's a draw! You both had Paper";
} else if (computerSelection == "Scissors") {
// add score to computer since you won
computerScore++;
console.log(computerScore);
return result = "You lose! Scissors beat Paper";
}
} else if (scissorsRegex.test(playerSelection)) {
if (computerSelection == "Rock") {
// add score to computer since you won
computerScore++;
console.log(computerScore);
return result = "You lose! Rock beats Scissors";
} else if (computerSelection == "Paper") {
// add score to player since you won
playerScore++;
console.log(computerScore);
return result = "You win! Scissors beats Paper";
} else if (computerSelection == "Scissors") {
return result = "It's a draw! You both had Scissors";
}
}
}
function game() {
for (let i = 0; i < 2; i++) {
console.log(result);
getPlayerChoice();
playRound();
console.log("Computer Score:", computerScore, "Your Score:", playerScore);
}
}
game();

我认为问题在于两个功能,playRound和Game。具体来说,我认为问题在于如何返回值。我认为playerScore和computerScore变量没有按应有的方式递增,可能是因为范围有问题。根据谁赢得了石头剪刀游戏,玩家或电脑的分数都应该上升。

如果还有什么我可以澄清的,请告诉我。谢谢大家:(

好吧,我看到了一个小问题,你没有存储提示值,也没有将它和计算机选择传递给你的playRound函数。

第一个

function getPlayerChoice() {
// add a return here
return prompt("Rock, Paper, Scissors? ")
}

然后

function game() {
for (let i = 0; i < 2; i++) {
console.log(result);
// pass the result of respective functions as agruments to playRound
playRound(getPlayerChoice(), getComputerChoice());
console.log("Computer Score:", computerScore, "Your Score:", playerScore);
}
}

感谢您指出快速正则表达式可以作为值存储。。不知怎么的,由于我经常使用它,我没能做到

最新更新