解答の手順
元となる、ひな型のプログラム
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 "あいこで"
# 返り値を返す
elsif (勝ちの条件)
puts "あなたの勝ちです"
# 返り値を返す
else
puts "あなたの負けです"
# 返り値を返す
end
end
next_game = true
puts "最初はグー、じゃんけん..."
# じゃんけんを繰り返す
while next_game do
next_game = janken
end
2.解答コード
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 "あいこで"
# 返り値を返す
janken = true
elsif player_hand - program_hand == -1 || player_hand - program_hand == 2
puts "あなたの勝ちです"
janken = false
else
puts "あなたの負けです"
janken = false
end
end
next_game = true
puts "最初はグー、じゃんけん..."
# じゃんけんを繰り返す
while next_game do
next_game = janken
end
3.じゃんけんアプリで得られた学び
randメソッド
randを使うと乱数を生成できること。randメソッドに引数として数を渡すと「0」から「渡した数 - 1」の間でランダムに数を返せる
rand(100) # => 0〜99の中から1つ数字をランダムに返す
じゃんけんの手をつくる
【自分の手】0〜2までの手をターミナルから入力する
player_hand = gets.to_i
【相手の手】乱数で0〜2までの数値を生成する
program_hand = rand(3)
じゃんけんの手は文字列ではなく数値として扱うこと。その方が簡単だから。
勝ち、負け、あいこの判定(条件式)を書く
【あいこ】
if player_hand == program_hand
#あいこの条件は自分と相手の数値が一緒のとき
puts "あいこで"
return true
【自分の手が勝ち】
elsif player_hand - program_hand = -1 || player_hand - program_hand = 2
#ここで書いている勝ちの条件は
#自分 − 相手 = -1 または自分 - 相手 = 2のとき
puts "あなたの勝ちです"
return false
【自分の手が負け】
else
#あいこと勝ちの条件を書いたので、負けの条件は書かない
puts "あなたの負けです"
return false
あいこの場合はもう一度じゃんけんをさせたいので、1番に評価をさせるために最初に書くこと。返り値はtrueかfalseで返すこと。
あいこのときに、もう一度じゃんけんをさせる
next_game = true
puts "最初はグー、じゃんけん..."
# じゃんけんを繰り返す
while next_game do
next_game = janken
end
if文で返り値がtrueであれば、変数next_gameに代入され、whileメソッドが実行される。メソッドの中身はjankenを呼び出すことでじゃんけんを繰り返すことができる。
gets
入力待ち状態になります。
入力されるまでプログラムは動きません。
to_iメソッド
文字列を数値に変換します。
ユーザーが打った数字は文字列の数字です。
それを数値に変換します。