LoginSignup
19
13

More than 5 years have passed since last update.

Rubyでじゃんけんプログラムを作成

Last updated at Posted at 2017-10-18

はじめに

プログラミングを勉強したての頃、FIzzBuzz問題やじゃんけん問題を作成することがあると思います。
今回はそのじゃんけん問題をRubyで作っていこうと思います。

最初はグー

まずじゃんけんを始めるには最初はグーで始めますね。

puts "じゃんけん・・・・"
puts "[0]グー\n[1]チョキ\n[2]パー"

この後自分の手を0、1、2で入力し、グー、チョキ、パーを判定します。
また自分の手をplayer_hand、相手の手をprogram_handととし、相手の手はランダムで決定されるようにします。

player_hand = gets.to_i
program_hand = rand(3)

この時、グー、チョキ、パーを0、1、2で判別するためにグー、チョキ、パーを配列に置く必要があります。

jankens = ["グー", "チョキ","パー"]

ここまでの処理は

puts "あなたの手:#{jankens[player_hand]}, 相手の手:#{jankens[program_hand]}"

で表示できます。

ここまでの処理

puts "じゃんけん・・・・"
puts "[0]グー\n[1]チョキ\n[2]パー"

player_hand = gets.to_i
program_hand = rand(3)

jankens = ["グー", "チョキ","パー"]
puts "あなたの手:#{jankens[player_hand]}, 相手の手:#{jankens[program_hand]}"

勝ち負け判定

・あいこの場合はplayer_handとprogram_handが==の時、
・勝ちの場合は
①player_handがグーの時、program_handがチョキ
②layer_handがチョキの時、program_handがパー
③player_handがパーの時、program_handがグー
の3通りです。
・最後に負けの場合ですが、上記の処理以外は全て負けとなりますので、上記に当てはまらない場合は負けとなります。
これをまとめると

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 "あなたの勝ちです"
  return false

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

となります。

あいこの時は

勝ちか負けであればゲームは終了となりますが、もしあいこだった場合、ゲームは続行します。
よって上記までの処理をループします。

puts "最初はグーじゃんけん・・・・"

def janken
  puts "[0]グー\n[1]チョキ\n[2]パー"

  player_hand = gets.to_i
  program_hand = rand(3)

  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 "あなたの勝ちです"
    return false

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



next_game = true

while next_game
  next_game = janken
end

以上でじゃんけん問題の制作を終わります。

19
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
13