条件分岐には「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
かなりシンプルになりました。
最近のコメント