最初に
去年の年末から書こうと思ったまま書いてなかったことです
去年作ったゲームで、このアルゴリズムを使いました
もう少し工夫すると、汎用性が上がるかも
コード
using System;
namespace Test {
static class Program {
static void Main() {
var rand = new Random();
var num = rand.Next(10);
TraceNotUseArray(num);
TraceUseArray(num);
}
static void TraceNotUseArray(int num) {
Console.WriteLine("配列を使わない場合の条件分岐");
if (num < 3) Console.WriteLine(num + " 番 : 0 - 2");
else if (num < 5) Console.WriteLine(num + " 番 : 3 - 4");
else if (num < 6) Console.WriteLine(num + " 番 : 5");
else if (num < 10) Console.WriteLine(num + " 番 : 6 - 9");
Console.WriteLine("\n");
}
static void TraceUseArray(int num) {
Console.WriteLine("配列を使った条件分岐");
foreach(var i in TraceDatas) {
if (num >= i.Max) continue;
i.Trace(num);
break;
}
Console.WriteLine("\n");
}
static TraceData[] TraceDatas = new TraceData[]{
new TraceData{ Max = 3, AddStr = "0 - 2" },
new TraceData{ Max = 5, AddStr = "3 - 4" },
new TraceData{ Max = 6, AddStr = "5" },
new TraceData{ Max = 10, AddStr = "6 - 9" },
};
}
sealed class TraceData {
public int Max { get; set; }
public string AddStr { get; set; }
public void Trace(int num) {
Console.WriteLine(num + " 番" + " : " + AddStr);
}
}
}