Tengo una o dos preguntas sobre cómo "aleatorizar" un resultado en este juego cuando escribes exactamente la misma opción.
por ejemplo: estoy llamando a la función 5 veces y si escribo diferentes opciones (primero piedra, luego papel y luego tijera, etc.) está bien, arroja diferentes resultados aleatorios, pero si escribo uno de ellos tres o cinco veces , como por ejemplo, papel, arrojará el mismo resultado cada vez sin importar qué, y me gustaría tener resultados diferentes, ¿es esto posible sin usar bucles? Estoy siguiendo los cursos TOP y me gustaría no usar bucles hasta que llegue a esa parte.
Además, me gustaría saber si hay alguna forma de imprimir "Gana la máquina" o "Gana el humano" después de todos los intentos, dependiendo de quién gane, como un mensaje final para ganar o perder todas las rondas.
Aquí está el código:
function computerPlay() { const choice = ["rock", "paper", "scissors"]; const choiceRandom = choice[Math.floor(Math.random() * choice.length)]; return choiceRandom; } function game(computerSelection, playerSelection) { playerSelection = prompt("Rock, paper or scissors?").toLowerCase(); if (computerSelection=="rock" && playerSelection=="scissors") { console.log("You lose, rock beats scissors"); } else if (computerSelection=="paper" && playerSelection=="scissors") { console.log("You win, scissors beats paper!"); } else if (computerSelection=="rock" && playerSelection=="paper") { console.log("You lose, rock beats paper!"); } else if (computerSelection=="paper" && playerSelection=="rock") { console.log("You lose, paper beats rock!"); } else if (computerSelection=="scissors" && playerSelection=="rock") { console.log("You win, rock beats scissors!"); } else if (computerSelection=="scissors" && playerSelection=="paper") { console.log("You lose, scissors beats paper!"); } else if (computerSelection===playerSelection) { console.log("Draw!"); } } const computerSelection = computerPlay(); let playerSelection game(computerSelection, playerSelection); game(computerSelection, playerSelection); game(computerSelection, playerSelection); game(computerSelection, playerSelection); game(computerSelection, playerSelection);Estoy en blanco en esto, he estado tratando de resolverlo durante horas.
Gracias.
Con respecto a su pregunta sobre la aleatoriedad, parece que está configurando la selección de su computadora en un valor constante pasándola a la función de su juego, lo que significa que siempre será la misma.
Si coloca tanto ComputerSelection como PlayerSelection en la función de juego, ComputerSelection llamará a la función computerPlay cada vez que inicie un juego. En cuanto a la selección de jugadores, pertenece a la función porque es hasta donde debe extenderse el alcance.
Finalmente, puede envolver el interior de su función de juego en un bucle for y declarar dos variables machineWins y playerWins. Incrementa las ganancias para cada uno. Luego, al final de la función, puede tener una declaración if else que registrará su mensaje en función de quién tiene más ganancias.
game() { let machineWins = 0; let playerWins = 0; for (let gamesPlayed = 0; gamesPlayed < 5; gamesPlayed++) { // game logic, if computer wins machineWins++, else playerWins++ } if (machineWins > playerWins) { // log machine wins } else { // log player wins } }