Lo siento, no pude ser específico en el título de la pregunta. Intentaré explicarlo mejor aquí. Tal vez sea una pregunta realmente tonta, pero comencé javascript hace unos días y ahora estoy tratando de implementar un pequeño juego de piedra, papel o tijera con una interfaz de usuario. ,
básicamente hay una función gameRound(playerInput, computerInput) cuando ejecuto esta función devuelve 0,1 o -1 dependiendo de quién ganó esta ronda y si hay empate. Necesito ejecutar esta función SOLAMENTE cuando se activa un evento de clic en un botón en mi página, así que inicialmente esto es lo que hice:
const btns = document.querySelectorAll(".buttons"); btns.forEach(btn => btn.addEventListener("click", () => { (gameRound(btn.id,computerPlay())) }));en mi html:
<button id="Rock" class="buttons"><strong>Rock</strong></button> <button id="Paper" class="buttons"><strong>Paper</strong></button> <button id="Scissors" class="buttons"><strong>Scissors</strong></button>Este código funciona para rondas individuales, pero se supone que debo declarar un ganador que alcance las 5 victorias primero, así que tengo otra función, mainGame, que rastrea la cantidad de victorias para el jugador y la computadora en un ciclo de tiempo como este:
function mainGame(){ let roundNum = 0; let playerWins = 0; let computerWins = 0; while(playerWins < 5 && computerWins < 5){ const btns = document.querySelectorAll(".buttons"); btns.forEach(btn => btn.addEventListener("click", () => { (gameRound(btn.id,computerPlay())) })); //let thisRound = gameRound(playerInput, computerPlay()); if (thisRound > 0){ playerWins ++; roundNum ++; }else if (thisRound < 0){ computerWins ++; roundNum ++; }else{ roundNum ++; } console.log(`Round: ${roundNum} \nPlayer: ${playerWins} \nComputer: ${computerWins}`); } const final = document.querySelector('#results-container'); if(playerWins > computerWins){ final.textContent = "You Won!"; }else{ final.textContent = "You Lose!"; } } mainGame();Pero ahora no puedo acceder al valor de retorno de la función gameRound sin ejecutarla por segunda vez y estoy atascado, ¿hay una solución fácil y obvia que no puedo ver o tengo que cambiar toda mi lógica para este juego?
¡Gracias!