Maison > Questions et réponses > le corps du texte
Pourquoi mon code s'ajoute-t-il à playerScore à chaque fois qu'il appelle la fonction playRound, au lieu de s'ajouter à ComputerScore ?
Mon brief de projet suggérait d'appeler la fonction playRound cinq fois dans la fonction de jeu car je n'ai pas cherché comment "boucler" le code pour répéter les appels de fonction.
Mon profil : https://www.theodinproject.com/lessons/foundations-rock-paper-scissors
J'ai essayé d'ajouter 1 à playerScore ou ComputerScore (ils sont déclarés comme variables globales avec la valeur 0) lors de l'appel de la fonction playRound.
J'ai essayé d'utiliser l'opérateur d'incrémentation ++ et J'ai essayé d'utiliser l'opérateur d'affectation d'addition += 1
Je pensais que le score du joueur gagnant serait augmenté de 1.
Ce qui s'est réellement passé : Chaque fois que la fonction playRound est appelée, playerScore est incrémenté de 1, ce qui n'est pas cohérent avec le gagnant.
//write a program to play 'rock, paper, scissors' game against the computer //COMPUTER CHOICE- generate random choice of weapon let choice = ['rock', 'paper', 'scissors']; //select random array element from weapon array function getComputerChoice() { computerChoice = choice[(Math.floor(Math.random() * choice.length))]; return computerChoice; } //USER CHOICE- assign user choice from prompt input function getPlayerChoice() { playerChoice = prompt('Choose your weapon', 'rock, paper or scissors?'); return playerChoice; } //assign values to player variables const playerSelection = getPlayerChoice().toLowerCase(); const computerSelection = getComputerChoice(); //message to return to player let youWin = `You win, ${playerSelection} beats ${computerSelection}`; let youLose = `You lose, ${computerSelection} beats ${playerSelection}`; let youDraw = `It's a draw!`; //put message options into an array let message = [youWin, youLose, youDraw]; //make global player score variables let playerScore = 0; let computerScore = 0; //function to play one round function playRound() { if (playerSelection == computerSelection) { return youDraw; } else if (playerSelection == 'rock' && computerSelection == 'paper') { computerScore = computerScore++; return message[1]; //you lose } else if (playerSelection == 'rock' && computerSelection == 'scissors') { playerScore++; return message[0]; //you win } else if (playerSelection == 'paper' && computerSelection == 'rock') { playerScore++; return message[0]; //you win } else if (playerSelection == 'paper' && computerSelection == 'scissors') { computerScore++; return message[1]; //you lose } else if (playerSelection == 'scissors' && computerSelection == 'rock') { computerScore++; return message[1]; //you lose } else if (playerSelection == 'scissors' && computerSelection == 'paper') { playerScore++; return message[0]; //you win } else { return ('oops! Type rock, paper or scissors!') } } //function to play five rounds and report player as winner or loser at the end function game() { //check code: what values are assigned to player selections? console.log('player ', playerSelection); console.log('computer ', computerSelection); playRound(); playRound(); playRound(); playRound(); playRound(); return playRound(); } console.log(game()); console.log(computerScore); console.log(playerScore);
P粉9492671212024-02-04 10:57:40
Quelques petits changements résoudront votre problème. Le principal changement est d'offrir le choix au joueur et à l'ordinateur à chaque tour au lieu d'une seule fois. Nous générerons également des messages youWin, youLose et d'autres en même temps.
//write a program to play 'rock, paper, scissors' game against the computer //COMPUTER CHOICE- generate random choice of weapon let choice = ['rock', 'paper', 'scissors']; //select random array element from weapon array function getComputerChoice() { computerChoice = choice[(Math.floor(Math.random() * choice.length))]; return computerChoice; } //USER CHOICE- assign user choice from prompt input function getPlayerChoice() { playerChoice = prompt('Choose your weapon', 'rock, paper or scissors?'); return playerChoice; } //make global player score variables let playerScore = 0; let computerScore = 0; //function to play one round function playRound() { //assign values to player variables const playerSelection = getPlayerChoice().toLowerCase(); const computerSelection = getComputerChoice(); //check code: what values are assigned to player selections? console.log('player:', playerSelection); console.log('computer:', computerSelection); //message to return to player let youWin = `You win, ${playerSelection} beats ${computerSelection}`; let youLose = `You lose, ${computerSelection} beats ${playerSelection}`; let youDraw = `It's a draw!`; if (playerSelection == computerSelection) { return youDraw; } else if (playerSelection == 'rock' && computerSelection == 'paper') { computerScore++; return youLose; } else if (playerSelection == 'rock' && computerSelection == 'scissors') { playerScore++; return youWin; } else if (playerSelection == 'paper' && computerSelection == 'rock') { playerScore++; return youWin; } else if (playerSelection == 'paper' && computerSelection == 'scissors') { computerScore++; return youLose; } else if (playerSelection == 'scissors' && computerSelection == 'rock') { computerScore++; return youLose; } else if (playerSelection == 'scissors' && computerSelection == 'paper') { playerScore++; return youWin; } else { return ('oops! Type rock, paper or scissors!') } } //function to play five rounds and report player as winner or loser at the end function game() { for(let round = 0; round < 5; round++) { console.log(`Round #${round+1}`) console.log(playRound()) } } game() console.log('Computer score:', computerScore); console.log('Player score:', playerScore);
.as-console-wrapper { max-height: 100% !important; }