Ruby

Rubyでじゃんけんコードを書いてみた。繰り返しも!練習にぜひ!

どうも、プログラミングを初めて今日で約3週間になるYumaです。

今回はRubyを使ってじゃんけんプログラムを書いていきます。

 

じゃんけんは初心者練習と言われていますが、プログラミング初心者にとっては難しいです。

記事内では所々解説も挟みますので、ぜひご参考にしてください!

Rubyでじゃんけんコード、完成形を見てみよう

Rubyでじゃんけんコード、完成形を見てみよう

では実際の完成コードを見てみましょう。

def janken
puts "最初はグー、じゃんけん..."
puts "[0]:グー\n:チョキ\n:パー"

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

こちらが完成形のコードです。これをコンソール上で出力すると…

と表示されます。

Yuma
Yuma
Rubyは他の言語と比べると出力が簡単ですが、最初はつまづくことが多いです。ぜひゆっくり進めていきましょう!

では、実際にRubyのコードを書いていきましょう。

実際にRubyでじゃんけんコードを書こう

実際にRubyでじゃんけんコードを書こう
def janken
puts "最初はグー、じゃんけん..."
puts "[0]:グー\n:チョキ\n:パー"

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です。)

 

ここでよく出る疑問がこちら

Yuma
Yuma
0とか1を選んだけど、それって意味があるの?グーとかチョキを表示したい!!

 

はい、その通り。数字だけではどうしてもグーチョキを表示できませんよね。なのでこのコードを書き足します。

def janken
puts "最初はグー、じゃんけん..."
puts "[0]:グー\n:チョキ\n:パー"

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の位置にあるグーがユーザーの手として表示されます。

これで基本文が完成です。

 

Yuma
Yuma
代入のイメージが付きにくい…という方は「Ruby 代入」と調べてみましょう。

分岐要素を付けよう(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

 

Yuma
Yuma
これでif文が完成!分からないところはコピーして調べてみよう!

 

よし!これで完成!

….でも大丈夫ですが、もう少しリッチなじゃんけんプログラムにしてみましょう。

繰り返し要素をつけよう(Rubyでじゃんけん)

繰り返し要素をつけよう(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でじゃんけんコード作成まとめ

この記事ではRubyを使用してじゃんけんコードを書く方法をご紹介しました。

最初はとても難しいですが、慣れれば簡単にできるようになります。

 

ぜひ何度も練習し、より難しいコードも難なく書けるよう勉強していきましょう!

お読みいただきありがとうございました!

 

では!