Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

139
Vistas
Piedra, papel y tijera elige las respuestas al azar

¡Gran día para todos!

Me preguntaba por qué si ya elegí "rock" (en la selección de jugador const) y la computadora eligió "rock", me imprime que "Gana la computadora" o, a veces, imprime que gané el juego en lugar de ser un empate. Lo mismo ocurre con el otro elemento en el código.

¿Qué habría pasado para que el resultado del juego también fuera aleatorio?

Aquí está mi código:

 function computerPicks() { let compChoices = ["rock", "paper", "scissors"] // let computer pick [rock, paper, scissors] let randomizeChoice = Math.floor(Math.random() * compChoices.length) + 1 // randomize rock paper and scissors if (randomizeChoice === 1) { return "rock"; } if (randomizeChoice === 2) { return "paper"; } if (randomizeChoice === 3) { return "scissors"; } } console.log(computerPicks()); // view computer's choice function playRound(playerSelection, computerSelection) { if (playerSelection === "rock") { if (computerSelection === "rock") { return "It is a tie!!" } else if (computerSelection === "paper") { return "The computer wins!"; } else { return "You win this game!"; } } else if (playerSelection === "paper") { if (computerSelection === "paper") { return "It is a tie!!" } else if (computerSelection === "rock") { return "The computer wins!"; } else { return "You win this game!"; } } else { if (computerSelection === "rock") { return "Computer wins!"; } else if (computerSelection === "paper") { return "User wins!"; } else { return "Draw!"; } } } const playerSelection = "scissors"; // primary choice const computerSelection = computerPicks(); // calls the randomized choices console.log(playRound(playerSelection, computerSelection)); // print out the result

Creo que también es aleatorio debido a cómo llamé al aleatorizador o cómo se declaró en la función computerPicks().

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La pregunta ha sido respondida correctamente , así que esto es solo una sugerencia de los cambios que podrías hacer en tu juego que podrían simplificar las cosas.

Tratar con muchos niveles de sentencias if/else puede ser difícil de comprender, mantener y depurar.

Podría reducir gran parte de la complejidad almacenando parte de la lógica del motor en un objeto que defina qué opciones superan a qué opciones (vea el mal llamado whatBeatsWhat ).

 // Explicit mapping of winning key (ie "rock") beating losing value (ie "scissors"). const whatBeatsWhat = { rock: "scissors", paper: "rock", scissors: "paper", } // Derive computerChoices from keys of whatBeatsWhat. const computerChoices = Object.keys(whatBeatsWhat) function computerPicks() { // Randomize rock paper and scissors. let randomizeChoice = Math.floor(Math.random() * computerChoices.length) // randomizeChoice will be one of [0,1,2] representing all possible indices of computerChoices. return computerChoices[randomizeChoice] } function playRound(playerSelection, computerSelection) { if (playerSelection === computerSelection) { return "It is a tie!!" } // Check if playerSelection in whatBeatsWhat maps to computerSelection // and if so, player has beaten computer. if (whatBeatsWhat[playerSelection] === computerSelection) { return "You win this game!" } // Undoubtedly, whatBeatsWhat[computerSelection] === playerSelection return "The computer wins!" } const playerSelection = "scissors" const computerSelection = computerPicks() const result = playRound(playerSelection, computerSelection) console.log(`${result} (${playerSelection} vs ${computerSelection})`)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su programa no se comporta como se esperaba porque está utilizando el operador '===' para comparar cadenas. El operador '===' es un operador de igualdad estricta, lo que significa que solo devolverá verdadero si ambos operandos se refieren al mismo objeto. En su caso, '==' sería más apropiado ya que está verificando la igualdad básica.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda