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

287
Vistas
Rubí (Piedra, Papel, Tijeras)

Hola, soy nuevo en Ruby y me he sentado durante mucho tiempo tratando de averiguar qué hice mal en este código, no hay ningún error, pero no me está dando el resultado deseado como un juego de rock normal. tijeras de papel Aquí está mi código:

 puts "Rock, Paper or Scissors" choice = gets.chomp cchoice = ["Rock", "Paper","Scissors"] comp = rand(1..3) won = false puts "Computer chose #{cchoice[comp]}" if (choice == "Rock") if (comp == 2) won = false end if (comp == 3) won = true end elsif (choice == "Paper") if (comp == 3) won = false end if (comp == 1) won = true end elsif (choice == "Scissors") if (comp == 1) won = false end if (comp == 2) won = true end else puts "I dont know what that means so-" end if (won) puts "YOU WON!!!" else puts "You lost.." end

¡Gracias por cualquier ayuda!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Las reglas de piedra, papel o tijera se pueden expresar como un simple hash:

 conditions = { "Rock" => "Scissors", "Paper" => "Rock", "Scissors" => "Paper" }

Entonces, simplemente puede verificar si un jugador ganó al otro con:

 if conditions[player_1] == player_2 puts "Player one wins!" elsif player_1 == player_2 puts "Its a draw!" else puts "Player two wins!" end

Esto es mucho menos complejo que un árbol de sentencias if/else anidadas.

 conditions = { "Rock": "Scissors", "Paper": "Rock", "Scissors": "Paper" } puts "Rock, Paper or Scissors" choice = gets.chomp.capitalize cchoice = conditions.keys.sample puts "Computer chose #{ cchoice }" if conditions[choice] == cchoice puts "You won!" elsif cchoice == choice puts "Its a draw." elsif conditions[cchoice] == choice puts "You lost." else puts "#{choice} is not a valid option" end

Esto cubre los cuatro resultados potenciales que son:

  • ganar
  • pérdida
  • dibujar
  • entrada incorrecta (esto también podría manejarse con un flujo de control como romper/lanzar/atrapar)

Además, en lugar de rand , puede usar Array#sample para seleccionar un elemento aleatorio de las claves del hash, lo que evita la necesidad de usar índices de matriz.

over 4 years ago · Santiago Trujillo Denunciar

0

Su generador de números aleatorios genera números entre 1-3, debería estar entre 0-2 ya que está tratando de indexar una lista

 comp = rand(0..2)

También cambie la comparación en la cláusula if para reflejar el cambio anterior,

Otra cosa que quizás haya olvidado es la condición de empate (si ambos seleccionan lo mismo)

over 4 years ago · Santiago Trujillo 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