principiante completo aquí y he estado haciendo el curso de fundamentos en Odin Project y más específicamente el juego de piedra, papel o tijera en javascript. He estado tratando de hacer la función del juego con bucles para repetir las rondas hasta que alguien gane y tenga algunos problemas. Mientras jugaba con los bucles y cambiaba de while a if y for, estuve a punto de rendirme y preguntar aquí. Sin embargo, hice que funcionara un poco, aunque no es del todo cierto, ya que no puedes cancelar el juego y en realidad no tiene 5 rondas, sino que utiliza un enfoque diferente. Este es mi código:
Editar: la penúltima oración fue básicamente mi pregunta, probé enfoques para hacer rondas, hacer rondas variables y luego ponerlo en bucle for, sin embargo, el bucle cuenta las rondas hasta cinco sin asegurarse de que el jugador y la puntuación de la computadora tengan alcanzaron su objetivo, y el hecho de que olvidé agregar la opción de empate. Intenté arreglar eso agregando condicionales, pero se complicó muy rápido y me perdí, lo borré e hice esto. La opción de cancelar nunca se me ocurrió hasta que comencé a hacer esta pregunta.
let playerScore = 0; let computerScore = 0; // gives a random value from the array function computerPlay() { let choice = ['rock', 'paper', 'scissors']; let randomPlay = Math.floor(Math.random() * choice.length); return choice[randomPlay] } // plays a round of a game function round() { let computerChoice = computerPlay(); let playerChoice = prompt('What do you choose?', ''.toLowerCase()); if (playerChoice === 'rock' & computerChoice === 'paper') { computerScore += 1; alert('You lose, paper beats rock!'); } else if (playerChoice === 'paper' & computerChoice === 'scissors') { computerScore += 1; alert('You lose, scissors beat paper!'); } else if (playerChoice === 'scissors' & computerChoice === 'paper') { computerScore += 1; alert('You lose, rock beats scissors!'); } else if (playerChoice === 'rock' & computerChoice === 'scissors') { playerScore += 1; alert('You win, rock beats scissors!'); } else if (playerChoice === 'paper' & computerChoice === 'rock') { playerScore += 1; alert('You win, paper beats rock!'); } else if (playerChoice === 'scissors' & computerChoice === 'paper') { playerScore += 1; alert('You win, scissors beat paper!'); } if (playerScore >= 3) { alert('You win the game!') } else if (computerScore >= 3) { alert('Computer wins the game!') } } //repeats rounds until someone wins the game function game() { for (i = 1; playerScore < 3 && computerScore < 3; i++) { round(); } } game();Recomendaría usar un sistema de matriz para Rock paper scissor, ya que es más conciso y rápido que usar bucles.
const checker_arr = [['Tie', 'Lost', 'Won'],['Won', 'Tie', 'Lost'],['Lost', 'Won', 'Tie']];Entonces, si el usuario elige 0 (que es roca) y la computadora elige 2 (tijera), entonces el usuario gana.
Github: mira esto para ver el código en vivo