Estoy tratando de escribir un juego simple de piedra, papel o tijera y estoy atascado tratando de hacer que el juego funcione durante 5 rondas. La computadora elige un valor de una matriz al azar, pero luego no elige uno nuevo en la reiteración del ciclo. es decir, la computadora elige rock para la ronda 1 y luego sigue siendo rock durante las 5 rondas. ¿Puede alguien por favor explicar lo que estoy haciendo mal?
let myArray = ['rock', 'paper', 'scissors'] let randomValue = myArray[Math.floor(Math.random() * myArray.length)] function computerPlay() { return randomValue; } function playRound(playerSelection, computerSelection) { if (playerSelection == computerSelection) { console.log('It\'sa tie!') return } else if ((playerSelection == 'rock' && computerSelection == 'scissors') || (playerSelection == 'paper' && computerSelection == 'rock') || (playerSelection == 'scissors' && computerSelection == 'paper')) { console.log('The human wins!'); console.log(playerScore += 1); return } else { console.log('The computer wins!'); console.log(computerScore += 1); return } } let playerScore = parseInt(0); let computerScore = parseInt(0); function game() { for (i = 0; i < 5; i++) { let playerSelection = prompt('Choose your weapon'); const computerSelection = computerPlay(); console.log(playRound(playerSelection, computerSelection)); console.log('Your score = ' + playerScore); console.log('Computer\'s score = ' + computerScore); } } console.log(game())
Debe mover la definición de randomValue dentro de la función computerPlay() porque cada vez que se llama a computerPlay(), no genera un nuevo valor, sino que devuelve el valor predefinido calculado al comienzo del programa para randomValue. Si lo mueve, se calculará y definirá randomValue cada vez que se llame a computerPlay().
Recomiendo hacer esto en su lugar:
let myArray = ['rock', 'paper', 'scissors'] function computerPlay() { let randomValue = myArray[Math.floor(Math.random() * myArray.length)] return randomValue; } {insert rest of code}