Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

280
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!