「じゃんけん」ゲームを書きました。
puts "Hello, this is a rock, papers, scissors game. Let's play."
puts "Player 1, plase enter your choice: \n"
puts "r for rock. \np for paper. \ns for scissors."
p1 = gets.chomp.downcase
puts "Player 2, please enter your choice: \n"
puts "r for rock. \np for paper. \ns for scissors."
p2 = gets.chomp.downcase
if p1 == 'r' && p2 == 's'
puts "Player 1 wins."
elsif p1 == 'r' && p2 == 'p'
puts "Player 2 wins."
elsif p1 == 'r' && p2 == 'r'
puts "Tie."
elsif p1 == 'p' && p2 == 'r'
puts "Player 1 wins."
elsif p1 == 'p' && p2 == 's'
puts "Player 2 wins."
elsif p1 == 'p' && p2 == 'p'
puts "Tie."
elsif p1 == 's' && p2 == 'r'
puts "Player 2 wins."
elsif p1 == 's' && p2 == 'p'
puts "Player 1 wins."
elsif p1 == 's' && p2 == 's'
puts "Tie."
end
それは機能しますが、それは多くのs であり、これがステートメントでelsif
可能であることを知っています。問題は、方法がわかりません。case...when
return
入力に応じてステートメントを使用しようとしていました。 、次にputs
'tie'"、および他の可能な結果についても同じです。
私は数字を結果に関連付けようとしていました:return - 1
プレーヤー 1 が勝った場合return 0
、引き分けの場合、return 2
プレーヤー 2 が勝った場合。
私はこのようにしましたが、それは同じようなもので、とても悪いと感じています:
case p1
when p1 == 'r' && p2 == 'r'
result = 0
when p1 == 'r' && p2 == 'p'
result = 1
when p1 == 'r' && p2 == 's'
result = -1
when p1 == 'p' && p2 == 'r'
result = -1
when p1 == 'p' && p2 == 'p'
result = 0
when p1 == 'p' && p2 == 's'
result = 1
when p1 == 's' && p2 == 'r'
result = 1
when p1 == 's' && p2 == 'p'
result = -1
when p1 == 's' && p2 == 's'
result = 0
end
if result == -1
puts "P1 wins"
elsif result == 0
puts "Tie"
elsif result == 1
puts "P2 wins"
end
あらゆる種類の助けをいただければ幸いです。