質問: "g") puts "あなたの勝ちです" return false else puts "あなたの負けです" return false end end puts janken ``` これではエラーが出てしまいます。 解決できる方よろしくお願いします。
回答: rubocop というチェックプログラムで警告が出ないように書き直してみました。 メソッドも行数を少なくするために、if .. else .. end の条件分岐の代わりに、 ハッシュデータを使って処理をするようにしています。 a.rb ``` HANDS = { 'g' => 'グー', 'c' => 'チョキ', 'p' => 'パー' }.freeze HANTEI = { 'gg' => :draw, 'gc' => :win, 'gp' => :lose, 'cg' => :lose, 'cc' => :draw, 'cp' => :win, 'pg' => :win, 'pc' => :lose, 'pp' => :draw }.freeze MESSAGES = { win: 'あなたの勝ちです', lose: 'あなたの負けです', draw: '引き分けです', nil => '無効です' }.freeze def janken puts 'g]グー, [c]チョキ, [p]パー' player_hand = gets.chomp program_hand = HANDS.keys.sample puts "あなたの手:#{HANDS[player_hand]}, 相手の手:#{HANDS[program_hand]}" hantei = HANTEI["#{player_hand}#{program_hand}"] puts MESSAGES[hantei] hantei end puts '最初はグー じゃんけん・・・・' janken ``` 実行例 ![イメージ説明