条件分岐には「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

かなりシンプルになりました。

2020年4月
« 4月    
 1234
567891011
12131415161718
19202122232425
2627282930  

カテゴリー

広告

現在の住まい、将来はVPSへ引越します。 ロリポップの上位版です。

広告

広告

最近のコメント

    広告

    Railsを動かす予定のVPS。無料キャンペーン中。

    広告