まずはじめに、ゲームのルールを理解しましょう。
うさぎ
まずなにを書きたいか明確にしてから、コードにしていこう
- グー、チョキ、パーの3つの手からランダムで出す
- グーはチョキに勝ち、チョキはパーに勝ち、パーはグーに勝ち
- あいこの場合は、もう一度じゃんけんをする
- まずは、自分と相手が向きを決めます(上、下、左、右のいずれか)
- じゃんけんで勝った方は、相手の向きを予想して「あっち向いて~」と声をかけます。
- 自分の向きと予想した相手の向きを比べます。
- もし予想が当たっていたら、勝ちです。当たっていなかったら、もう一度じゃんけんをします。
じゃんけんのメソッドと、あっち向いてホイのメソッドをそれぞれかいて、それを呼び出そう
Ruby
# じゃんけんメソッド
def janken puts "0(グー) 1(チョキ) 2(パー) " player_hand = gets.chomp.to_i # 入力された数字をplayer_hand変数に代入 program_hand = rand(3) # ランダムな数字0~2をprogram_hand変数に代入 if player_hand >= 3 # 入力された数字が指定した数字以外だった場合 puts "0(グー) 1(チョキ) 2(パー) のいずれかを入力してください" return end 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 "あなたの勝ちです!" acchi_muite_hoi # acchi_muite_hoiメソッドの呼び出し return false else puts "あなたの負けです!" return false end
end
# あっち向いてホイメソッド
def acchi_muite_hoi puts "あっち向いてホイをしましょう!" puts "あっち向いて〜" puts "0(上) 1(下) 2(左) 3(右)" player_direction = gets.chomp.to_i program_direction = rand(4) if player_direction >= 4 # 入力された数字が指定した数字以外だった場合 puts "0(上) 1(下) 2(左) 3(右)のいずれかを入力してください" return end directions = ["上", "下", "左", "右"] puts "あなたの向き:#{directions[player_direction]}, 相手の向き:#{directions[program_direction]}" if player_direction == program_direction puts "あなたの勝ちです!" return false else puts "残念!" return false end
end
# 実行部分
puts "じゃんけん..."
janken_game = true # 初期値
while janken_game do janken_game = janken # じゃんけんメソッドの返り値がfalseになったらwhile文が終了する
end
最初に、プレイヤーが入力するためのメッセージを表示します。
プレイヤーが入力した数字を、変数「player_hand」に代入します。「gets.chomp.to_i」は、ユーザーからの入力を文字列として受け取り、整数に変換します。
コンピューターの手をランダムに選び、変数「program_hand」に代入します。「rand(3)」は、0から2の間の整数をランダムに生成します。
もしプレイヤーが0~2以外の数字を入力した場合は、エラーメッセージを表示して、このメソッドを終了します。
選択された手を配列「jankens」に格納し、それを用いて、プレイヤーとコンピューターの手を表示します。
プレイヤーの手とコンピューターの手が同じ場合は、「あいこで…」と表示し、このメソッドを再度呼びだし、あっち向いてホイメソッドの実行を行います。
まず、janken_game
という変数にtrue
を初期値として代入しています。
そして、while
文でjanken_game
がtrue
である間、janken
メソッドを実行します。
janken
メソッドはじゃんけんの結果を返し、その結果によってjanken_game
の値を変更します。
janken_game
がfalse
になった場合、while
文が終了します。
このようにして、janken
メソッドを実行してじゃんけんゲームを行い、勝敗が決まるまで繰り返し行うことができます。