チンチロリンの役を判定するプログラム
チンチロリンというすごろくゲームの役判定プログラムを作成しました。
しかしながら、コードがいかにも残念な出来になってしまったので
プログラムの改善を行いたいと思っています。
より良いアイデアをお持ちの方はご教授いただけると幸いです。
三つのサイコロの値に応じて役を決めます。
役は以下の通りです。
(強)
アラシ : 3つのサイコロすべてがゾロ目
シゴロ : サイコロの目が(4, 5, 6)
ロッポウ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが6の目(例:5, 5, 6)
ゴケ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが5の目
ヨツヤ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが4の目
サンタ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが3の目
ニゾウ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが2の目
ピン : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが1の目
目なし : 3つの目それぞれ値が違ったとき
ヒフミ : サイコロの目が(1, 2, 3)
(弱)
※参考
C#
1enum hand 2{ 3 HIFUMI = -1, 4 MENASHI, 5 PIN = 1, 6 NIZO, 7 SANTA, 8 YOTSUYA, 9 GOKE, 10 ROPPOU, 11 SHIGORO, 12 ARASHI, 13} 14 15class Program 16{ 17 static void Main(string[] args) 18 { 19 var dice = new List<int>() { 6, 5, 4 }; 20 Console.WriteLine(Check(dice)); 21 } 22 23 static private hand Check(List<int> dice) 24 { 25 hand ret; 26 27 switch (dice.Distinct().Count()) 28 { 29 case 1: 30 ret = hand.ARASHI; 31 break; 32 case 2: 33 ret = (hand) (2 * dice.Distinct().Sum() - dice.Sum()); 34 break; 35 case 3: 36 if (dice.All(x => x == 1 || x == 2 || x == 3)) 37 { 38 ret = hand.HIFUMI; 39 } 40 else if (dice.All(x => x == 4 || x == 5 || x == 6)) 41 { 42 ret = hand.SHIGORO; 43 } 44 else 45 { 46 ret = hand.MENASHI; 47 } 48 break; 49 default: 50 ret = hand.MENASHI; 51 break; 52 } 53 54 return ret; 55 } 56}

回答1件
あなたの回答
tips
プレビュー