条件分岐には「if文」の他に「case文」があります。
「if文」は条件の成立、不成立によって実行する処理を2つに分岐しますが、
「case文」は条件にする値によって、実行する処理を2つ以上に分岐します。
case 条件にする値
when 値1 then
実行する処理
when 値2 then
実行する処理
when 値3 then
実行する処理
else
一致する値が無い場合に実行する処理
end
では「case文」を使用して、
コンピューターにサイコロを振ってもらい出た目を表示してもらいましょう。
dice = rand(7)+1
case dice
when 1 then
print("1が出ました","\n")
when 2 then
print("2が出ました","\n")
when 3 then
print("3がでました","\n")
when 4 then
print("4がでました","\n")
when 5 then
print("5がでました","\n")
when 6 then
print("6がでました","\n")
else
print("サイコロには無い目がでました","\n")
end
値の部分には複数の値を書く事も出来ます。
dice = rand(6)+1
case dice
when 1,3,5 then
print("奇数が出ました","\n")
when 2,4,6 then
print("偶数が出ました","\n")
end
では「case文」を使用してじゃんけんプログラムを書き変えてみます。
「if文」の条件には「コンピュータの手 - 人間の手」を使用しました。
この時の値を見てみると勝利の時は「2、-1」。
負けの時は「-2、1」になっています。この2組の値を使用して書いてみます。
STDOUT.sync = true
goo = 1
par = 2
choki = 3
print("[1:グー、2:パー、3:チョキ]","\n")
print("[1,2,3]の数字を入力","\n")
human_hand = gets.to_i
computer_hand = rand(3)+1
print("あなたの手",human_hand,"\n")
print("コンピュータの手",computer_hand,"\n")
a = computer_hand - human_hand
case a
when -1,2 then
print("あなたの勝ちです","\n")
when -2,1 then
print("あなたな負けです","\n")
else
print("引き分けです","\n")
end
かなりシンプルになりました。
最近のコメント