Ruby | じゃんけんとあっち向いてホイ

ゲームのルールを理解する

まずはじめに、ゲームのルールを理解しましょう。

うさぎ
うさぎ

まずなにを書きたいか明確にしてから、コードにしていこう

じゃんけんのルール

  • グー、チョキ、パーの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_gametrueである間、jankenメソッドを実行します。

jankenメソッドはじゃんけんの結果を返し、その結果によってjanken_gameの値を変更します。

janken_gamefalseになった場合、while文が終了します。

このようにして、jankenメソッドを実行してじゃんけんゲームを行い、勝敗が決まるまで繰り返し行うことができます。