【学習ログ】【Ruby】じゃんけんプログラム

※このページは過去に自分がRubyの勉強をしたときの学習ログです。誰かの参考になれば幸いです。

スポンサーリンク

1〜3の数字を入力するとコンピューターとじゃんけんできるプログラムを作ってみた

いきなり完成コード

puts "数字を入力してください。"

def janken
  puts "1:グー"
  puts "2:パー"
  puts "3:チョキ"

  player_hand = gets.to_i
  partner_hand = rand(1..3)
  
    if
      player_hand < 1 || player_hand > 3
      puts "正しい数字を入力してください"
      return janken
    end

  jankens_program = (player_hand - partner_hand + 3) % 3

    if jankens_program == 0
      puts "あいこで"
      return true

    elsif jankens_program == 2
      puts "あなたの勝ちです"
      return false

    else
      puts "あなたの負けです"
      return false

    end
end

next_game = true

while next_game
    next_game = janken
end

実行結果 → 
数字を入力してください。
1:グー
2:パー
3:チョキ
1
あいこで
1:グー
2:パー
3:チョキ
5
正しい数字を入力してください
1:グー
2:パー
3:チョキ
2
あなたの負けです

解説(我流です)

こちらも作り方が色々あると思うが、まずじゃんけんの勝ち負けを判断するのにあたって
グー=0、チョキ=1、パー=2として(自分の手 - 相手の手 + 3)% 3の計算をする。
言葉だとわかりにくいので、以下の図参照。

自分が勝つ時

自分相手差+3(差+3)%3
01-122
12-122
20252

自分が負ける時

自分相手差+3(差+3)%3
02-211
10141
21141

引き分けの時

自分相手差+3(差+3)%3
00030
11030
22030

つまり、
2 → 勝ち
0 → あいこ
1 → 負け
と言う結果になり、上記の勝ち負けの計算式を
(player_hand - partner_hand + 3) % 3とし、jankens_programと言う変数に代入する。

※その他ランダムな数を割り出すrandについては当初rand(3)としていたが、
これだと0,1,2の範囲になってしまうので、rand(1..3)へ修正した。

本日は以上となります。

最後までお読みくださりありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする