今回はRubyを使ってじゃんけんプログラムを書いていきます。
じゃんけんは初心者練習と言われていますが、プログラミング初心者にとっては難しいです。
記事内では所々解説も挟みますので、ぜひご参考にしてください!
Rubyでじゃんけんコード、完成形を見てみよう
では実際の完成コードを見てみましょう。
def janken
puts "最初はグー、じゃんけん..."
puts "[0]:グー\n[1]:チョキ\n[2]:パー"
player_hand = gets.to_i
program_hand = rand(3)
if player_hand > 2
puts "入力された値が無効です"
return true
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 "あなたの勝ちです"
return false
else
puts "負け"
return false
end
end
next_game = true
while next_game
next_game = janken
end
こちらが完成形のコードです。これをコンソール上で出力すると...
と表示されます。
Rubyは他の言語と比べると出力が簡単ですが、最初はつまづくことが多いです。ぜひゆっくり進めていきましょう!
では、コードの中身を見ていきましょう。
コードの中身を見ていこう
def janken
puts "最初はグー、じゃんけん..."
puts "[0]:グー\n[1]:チョキ\n[2]:パー"
player_hand = gets.to_i
program_hand = rand(3)
end
まずは大枠から書いていきましょう。じゃんけんのコードを書くので分かりやすくjanken メソッドを作成します。
メソッドとは...
分かりやすく説明するとグループの名前を決めてあげることです。
そして、Rubyの場合はdefを使うことで作成することができます。
メソッドを指定した後はputs
を使用し「じゃんけんをするから0or1or2のどれかを選んで!」という内容を伝えます。(文字の横にある\nは改行コードです。)
次に出てくるのがplayer_hand = gets.to_i
というコード、こちらを書くことでユーザー数字を入力し、受け取ることができます。一度書いてみましょう。
その次に出てくるのがprogram_hand = rand(3)
です。rand
(数字)と書くことでランダムに( )内に数字を入れます。この場合の三つは(0と1と2です。)
ここでよく出る疑問がこちら
0とか1を選んだけど、それって意味があるの?グーとかチョキを表示したい!!
はい、その通り。数字だけではどうしてもグーやチョキを表示できませんよね。なのでこのコードを書き足します。
def janken
puts "最初はグー、じゃんけん..."
puts "[0]:グー\n[1]:チョキ\n[2]:パー"
player_hand = gets.to_i
program_hand = rand(3)
# ↓書き足したコード
jankens=["グー","チョキ","パー"]
puts "あなたの手:#{jankens[player_hand]}, プログラムの手:#{jankens[program_hand]}"
end
jankensにグー,チョキ,パーの三つを代入します。
次にユーザーが選んだ手とプログラムによってランダムに選んだ手を文字列として表しましょう。
jankens[player_hand]
と書かれていますね、これはplayer_handの数字をjankensの数字と繋げる役割を果たします。
例えば....
0を選んだ場合、jankensの0の位置にあるグーがユーザーの手として表示されます。
これで基本文が完成です。
代入のイメージが付きにくい...という方は「Ruby 代入」と調べてみましょう。
分岐要素を付けよう(Rubyでじゃんけん)
かなり完成系に近づきました。次はif文を使って実際にじゃんけんプログラムを行いましょう。
まずはじめに、じゃんけんの勝ち負けは以下に分けれます。
・あいこの場合
ユーザーとプログラムの値が一緒の時
・ユーザが勝つ場合
ユーザー(グー):プログラム(チョキ)
ユーザー(チョキ):プログラム(パー)
ユーザー(チョキ):プログラム(パー)
の三つ。
・ユーザーが負ける場合
それ以外
ややこしいですね...。これをif文で定義します。
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
これでif文が完成!分からないところはコピーして調べてみよう!
よし!これで完成!
....でも大丈夫ですが、もう少しリッチなじゃんけんプログラムにしてみましょう。
繰り返し要素をつけよう(Rubyでじゃんけん)
あいこの場合はもう一度じゃんけんを行いたいですよね、そこで切り返し要素を使いましょう!
繰り返し要素はreturnを使うことで定義できます。完成系のコードがこちら
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
こちらのRubyコードを分かりやすく言うともしtrueが起こった時にはもう一度jankenメソッドを繰り返す
というもの。
jankenメソッドとは記事内冒頭で説明したものです。
こちらを使うことでより親切なプログラムになります。
基本的なじゃんけんコードの書き方は以上です!お疲れ様でした!!
少しスキルアップ!
こちらはスキルアップしたい方向けです。
0or1or2のどれかを入力すればじゃんけんが表示できるようになりましたね、しかし、もしユーザーが2以上を入力した場合はどうでしょう、エラーが起きてしまいます。
なのでコードにこのように指定しましょう。
if player_hand > 2
puts "入力された値が無効です"
return true
2以上の数を入力した際に値が無効であることを表示するコードです。
どこに入れるかはぜひ考えてみましょう。ちなみに答えは冒頭のコードに書いてあります。
Rubyでじゃんけんコード作成まとめ
この記事ではRubyを使用してじゃんけんコードを書く方法をご紹介しました。
最初はとても難しいですね...。
ぜひ何度も練習し、難しいコードも難なく書けるよう勉強していきましょう!
お読みいただきありがとうございました!
では!