じゃんけんプログラムで負けたら再戦【Ruby】

Ruby プログラミング

Rubyのじゃんけんプログラムに、負けたら再戦する機能つけてみた。
2週間前ほどに作ろうとしたけど解らなくて投げてたやつを久しぶりにやってみた。

そしたらすんなりできましたとさ。

コード

#####【編集】こ↑こ↓から#####
ready = "最初はグーじゃんけん・・・・"
puts ready #掛け声を変数にして負けて再戦の部分に使用してます。
#####【編集】こ↑こ↓まで#####

def janken(ready)
  puts "[0]グー\n[1]チョキ\n[2]パー"

  player_hand = gets.to_i #ここに「0」などをいれて手を固定すると楽
  program_hand = rand(3) #ここに「0」などをいれてCOM側の手を固定することで検証が楽。

  jankens = ["グー", "チョキ","パー"]
  puts "あなたの手:#{jankens[player_hand]}, 相手の手:#{jankens[program_hand]}"

  if player_hand == program_hand
    puts "あいこで"
    return true
  elsif(player_hand == 0 && program_hand == 1)||(player_hand == 1 && program_hand == 2)||(player_hand == 2 && program_hand == 0)
    puts "あなたの勝ちです"
    return false

  else
    #####【追加】こ↑こ↓から#####
    puts "あなたの負けです。"
    puts "再戦しますか?"
    puts "[0]Yes\n[1]No\n"
    revenge_game = gets.to_i
        if revenge_game == 0 
            puts ready
            return true
        else
            puts "お疲れ様でした。アプリケーションを終了します。"
            exit
        end
    #####【追加】こ↑こ↓まで#####
    return false
  end
end


next_game = true

while next_game
  next_game = janken(ready)
end

 

難しい問題だったではなく、前の考え方が難しかったというような結末でした。

メソッド定義が乱立してるときは、
1つ作ったら実行して確かめればいいのに、思いつく限りばばっと書いたのでどこのバグなのかわからんバグ地獄になってたような気がします。

あと、「最初はグー」の掛け声が、再戦の時は表示されないので、そこの解消方法が回りくどくて投げたような記憶があります。

▼Rubyでじゃんけんプログラムを作成(@JunJun0706氏の記事を参考に)
https://qiita.com/JunJun0706/items/939334da3c5b13ab7be5