Sé que este es un juego muy popular/sencillo de hacer, pero tengo algunos problemas. Hice un juego de piedra, papel o tijera en javascript y logré que funcione de modo que le indique al jugador que elija piedra, papel o tijera, haga que la computadora elija una opción al azar y un medio para decir "usted pierde" o "usted gana". El problema es que estoy obligado a hacer 5 rondas. Ese es el problema que estoy teniendo. Yo, por alguna razón, parece que no puedo obtener el código para avisar al usuario 5 veces. Solo le pregunta al usuario una vez y ejecuta el mismo código cada vez. Mi código es el siguiente:
function playRound(playerSelection) { let computerSelection = getComputerSelection(); if (playerSelection == "rock") { addToList(playerSelection, computerSelection); if (computerSelection == "rock") { result = "It's a tie"; } else if (computerSelection == "paper") { result = "You lost! Paper beats Rock"; computerScore++; } else { result = "You won! Rock beats Scissors"; playerScore++; } } else if (playerSelection == "paper") { addToList(playerSelection, computerSelection); if (computerSelection == "rock") { result = "You won! Paper beats Rock"; playerScore++; } else if (computerSelection == "paper") { result = "It's a tie"; } else { result = "You lost! Scissors beats Paper"; computerScore++; } } else { addToList(playerSelection, computerSelection); if (computerSelection == "rock") { result = "You lost! Rock beats Scissors"; computerScore++; } else if (computerSelection == "paper") { result = "You won! Scissors beats Rock"; playerScore++; } else result = "It's a tie"; } h1.textContent = result; player.textContent = playerScore; computer.textContent = computerScore; game(); } function game() { if (playerScore === 5) { end.style.display = "block"; message.textContent = "You Won!"; } else if (computerScore === 5) { end.style.display = "block"; message.textContent = "You Lost!"; } }Agradecería cualquier ayuda o dirección que se dé. He intentado poner mi función "playRound" fuera del bucle, pero me da el mismo problema. ¿Qué haría que apareciera dos veces?
¡Gracias!
No soy un experto en JS, así que corrígeme si me equivoco, pero lo que parece ser el caso es que esta variable:
const playerSelection = window.prompt("Enter your choice: ").toLowerCase();solo se inicializa una sola vez con el retorno de esa función. (porque está fuera de cualquier función) Acceder a la variable solo recuerda su valor con el que se inicializó, lo que hace que el bucle principal se ejecute una y otra vez solo con ese valor inicial.
reemplazando esa línea con algo como:
function getPlayerSelection(){ return window.prompt("Enter your choice:").toLowerCase() } y reemplazar cualquier lugar donde use playerSelection con getPlayerSelection() debería solucionar este problema.
Esto se debe a que está solicitando el aviso del jugador solo una vez, es decir, está fuera del método playRound. Intente mover el siguiente fragmento al método de ronda.
const computerSelection = computerPlay();const playerSelection = window.prompt("Ingrese su elección: ").toLowerCase();