プログラムとじゃんけんをするプログラムを実装。
勝った場合 "あなたの勝ちです"と表示させる
負けた場合 "あなたの負けです"と表示させる
あいこの場合 "あいこで"と表示させたあともう一度じゃんけんをさせる
最初はグー、じゃんけん...
[0]:グー
[1]:チョキ
[2]:パー
# 入力待ち
出す手を入力したあと(勝った場合)
最初はグー、じゃんけん...
[0]:グー
[1]:チョキ
[2]:パー
0
あなたの手:グー, わたしの手:チョキ
あなたの勝ちです
出す手を入力したあと(あいこの場合)
最初はグー、じゃんけん...
[0]:グー
[1]:チョキ
[2]:パー
0
あなたの手:グー, わたしの手:グー
あいこで
[0]:グー
[1]:チョキ
[2]:パー
# 入力待ち
雛形
def janken
puts "[0]:グー\n[1]:チョキ\n[2]:パー"
# ターミナルからじゃんけんの手を入力
player_hand =
# 乱数でプログラム側の手を決定
program_hand =
jankens = ["グー", "チョキ", "パー"]
puts "あなたの手:#{jankens[player_hand]}, わたしの手:#{jankens[program_hand]}"
# あいこの判定はplayer_handとprogram_handの値が等しいとき
if
puts "あいこで"
# 返り値を返す
# じゃんけんに勝つパターンを全て並べる
elsif
puts "あなたの勝ちです"
# 返り値を返す
else
puts "あなたの負けです"
# 返り値を返す
end
end
next_game = true
puts "最初はグー、じゃんけん..."
while next_game do
# jankenメソッドの返り値をnext_gameに代入
end
乱数の作り方
rand(欲しい乱数の数)
randメソッドを使うと手軽に乱数を生成できます。randメソッドに引数として数を渡すと「0」から「渡した数 - 1」の間でランダムに数を返します。
rand(100) # => 0〜99の中から1つ数字をランダムに返す
これを使えばランダムにじゃんけんの手を出すことができます。
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
puts "最初はグー、じゃんけん..."
while next_game do
next_game = janken
end
まずはじゃんけん用のメソッドを定義。これはまだ次のゲームがあるか、すなわちあいこかどうかをtrueかfalseで返します。あいこならtrue、決着がついたらfalseです。
def janken
if あいこのとき
puts "あいこで"
return true
elsif 勝ったとき
puts "あなたの勝ちです"
return false
else
puts "あなたの負けです"
return false
end
end
次にじゃんけんの決着がつくまでjankenメソッドを呼び出すようにします。
def janken
if あいこのとき
puts "あいこで"
return true
elsif 勝ったとき
puts "あなたの勝ちです"
return false
else
puts "あなたの負けです"
return false
end
end
next_game = true # 1回目を実行するためにtrueを代入
puts "最初はグー、じゃんけん..." # 最初の表示
while next_game do # next_gameがfalseまで繰り返す
next_game = janken # jankenメソッドの返り値は結果なのでnext_gameに代入
end
次に、jankenメソッドの中に実際にじゃんけんをする処理を書きます。まずは自分の手を入力。ターミナルからじゃんけんの手を入力させてその入力を変数player_handに代入。
def janken
puts "[0]:グー\n[1]:チョキ\n[2]:パー"
player_hand = gets.to_i
if あいこのとき
puts "あいこで"
return true
elsif 勝ったとき
puts "あなたの勝ちです"
return false
else
puts "あなたの負けです"
return false
end
end
next_game = true
puts "最初はグー、じゃんけん..."
while next_game do
next_game = janken
end
次にプログラム側の出す手を乱数で決定。決定したらそれぞれの手を表示。「グー、チョキ、パー」はそれぞれ「0, 1, 2」という数字に対応しているため、rand(3)で0〜2の乱数を生成。生成した乱数の値をプログラムの手である変数program_handに代入。
また、「グー、チョキ、パー」のじゃんけんの手である文字列を配列jankensで定義。数値と値が対応している場合、配列オブジェクトを使うとソースコードを簡潔に書くことが出来る場合が多い。
puts "[0]:グー\n[1]:チョキ\n[2]:パー"
player_hand = gets.to_i
program_hand = rand(3) # 乱数でプログラム側の手を決定
jankens = ["グー", "チョキ", "パー"] # じゃんけんの手を配列で管理
puts "あなたの手:#{jankens[player_hand]}, わたしの手:#{jankens[program_hand]}"
if あいこのとき
puts "あいこで"
return true
elsif 勝ったとき
puts "あなたの勝ちです"
return false
else
puts "あなたの負けです"
return false
end
end
next_game = true
puts "最初はグー、じゃんけん..."
while next_game do
next_game = janken
end
最後に「勝ち、負け、あいこ」の判定。if文の先頭を「あいこのとき」にしたのはあいこの判定が最も簡単だから。あいこの判定はplayer_handとprogram_handの値が等しいとき。勝ちはそれぞれの手によってパターンが3つにわかれます。負けはそれ以外のとき。
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
puts "最初はグー、じゃんけん..."
while next_game do
next_game = janken
end