見出し画像

プログラミング初心者が師匠に学ぶ備忘録

超初心者である私が師匠にコードをリファクタリングしてもらった結果..

『あっち向いてホイ』をRubyで実装

def main
 #勝敗が決まらない限り続ける
 while !IsGameDecided()
 end
end

def IsGameDecided
 jankenResult = JankenResult()
 if jankenResult == 2
   puts "あいこで.."
   return false
 end

 if !IsAhoiDecided()
   puts "またまたじゃんけん..."
   return false
 end

 if jankenResult == 1
   puts "やったー!勝った!"
 else
   puts "残念..負けたー"
 end
 return true
end

#じゃんけん
def JankenResult
 puts "じゃんけん..."
 choices = ["グー", "チョキ", "パー"]
 ShowStartMessage(choices)

 player_hand = gets.to_i
 program_hand = rand(choices.size)
 ShowChoiceInfo(choices[player_hand], choices[program_hand])

 result = 0 #負け:0, 勝ち:1, あいこ:2
 if player_hand == program_hand
   result = 2
 elsif ((player_hand == 0 && program_hand == 1) || (player_hand == 1 && program_hand == 2) || (player_hand == 2 && program_hand == 0))
   result = 1
 end
 return result
end

#あっち向いてホイ
def IsAhoiDecided
 puts "あっち向いて〜"
 choices = ["上", "下", "左", "右"]
 ShowStartMessage(choices)

 player_direction = gets.to_i
 program_direction = rand(choices.size)
 ShowChoiceInfo(choices[player_direction], choices[program_direction])

 return (player_direction == program_direction)
end

def ShowStartMessage(choices)
 numChoices = choices.size
 for i in 0..(numChoices-1) do
   puts i.to_s + "(" + choices[i] + ")"
 end
end

def ShowChoiceInfo(playerChoiceString, programChoiceString)
 puts "ホイ!"
 separator = "------------------------"
 puts separator
 puts "あなた:#{playerChoiceString}"
 puts "相手:#{programChoiceString}"
 puts separator
end

main()

ちなみに師匠の口癖は「ここがちょっと冗長なんだよな..」

幾度の改定を経て、原形を留めない程すっきりとしました!

Railsによるenumも使用したらもっと分かりやすくなるそうですが.. (←今回初めてRubyに触れた師匠からのアドバイスです)。







この記事が気に入ったらサポートをしてみませんか?