C#で何桁でもできるOver&Underゲーム

ヒントをもとに数字を当てるゲームであるOver&Under．
それを好みの桁数でできるようにトレーニング代わりにしてみました．

3桁だと、0から999までのどれかが正解．
正解の数字より大きいと "Over"
　　　　　　　小さいと "Under"
3桁より大きいと "Too Over!!"
と表示されます．

しくみとしては、各桁ごとにint[]で頭から判断しています
そのため、longなどに捕らわれず何桁でもできます

> コメントの助言により、stringによる判断から、int[]による判断へ変更しました
ありがとうございます

#コード
Program.csと、タイトルなどが書いてあるTitle.txtがあります

```Title.txt
Over & Under Game
-----
n桁の数字を当てよう！

正解の数字より大きいと Over
　　　　　　　小さいと Under
n桁より大きいと　　　  Too Over!!
とヒントが出るよ！
-----
```

```C#:Program.cs
using System;
using System.IO;

namespace Game_OverUnder
{
    class Program
    {
        static void Main()
        {
            // ランダムな数字を作成するやつ
            var rnd = new Random();

            // Title.txtの読込みとその表示
            var path = "Title.txt";
            try
            {
                using (var reader = new StreamReader(path))
                {
                    while (!reader.EndOfStream)
                    {
                        Console.WriteLine(reader.ReadLine());
                    }
                }
            }
            catch (FileNotFoundException)
            {
                Console.WriteLine("{0}が見つかりません．", path);
            }
            catch
            {
                Console.WriteLine("読込みエラーが起きました．");
            }

            while (true)
            {
                // 桁数の入力
                Console.WriteLine("何桁に挑戦しますか");
                int dight;
                while (!int.TryParse(Console.ReadLine(), out dight) || dight < 1)
                {
                    Console.WriteLine("何桁に挑戦しますか");
                }
                Console.WriteLine("-----");

                // 正解の作成
                var correct = new int[dight];
                for (int i = 0; i < dight; i++)
                {
                    correct[i] = rnd.Next(10);
                }
                /*Console.Write("correct = ");
                foreach (var num in correct)
                    Console.Write(num);
                Console.WriteLine();*/

                // 正解を当てるループ
                bool isWrong = true;
                for (int time = 1; isWrong; time++)
                {
                    var answer = new int[dight];

                    // 予想の入力
                    Console.Write("{0,3} > ", time);
                    var answerTxt = Console.ReadLine();

                    // 予想のstringをint[]に変換する
                    var isCheck = true;
                    for (int i = answerTxt.Length - 1, put = dight - 1; i >= 0; i--)
                    {
                        if (put < 0)
                        {
                            Console.Write("      ");
                            Console.WriteLine("Too Over!!");
                            isCheck = false;
                            break;
                        }
                        if ('0' <= answerTxt[i] && answerTxt[i] <= '9')
                        {
                            answer[put] = answerTxt[i] - '0';
                            put--;
                        }
                    }
                    /*Console.Write("answer = ");
                    foreach (var num in answer)
                        Console.Write(num);
                    Console.WriteLine();*/
                    if (!isCheck)
                    {
                        continue;
                    }

                    // 大小のチェック
                    var a = Check(answer, correct, 0);
                    switch (a)
                    {
                        case 0:
                            Console.Write("      ");
                            Console.WriteLine("Correct!");
                            isWrong = false;
                            break;

                        case 1:
                            Console.Write("      ");
                            Console.WriteLine("Over");
                            break;

                        case -1:
                            Console.Write("      ");
                            Console.WriteLine("Under");
                            break;
                    }
                }
                Console.WriteLine("-----");
            }
        }

        // 再帰による大小のチェック
        static int Check(int[] answer, int[] correct, int num)
        {
            // 終点まで同じだったら0を返す
            if (num == correct.Length)
            {
                return 0;
            }

            // 同じだったら次へ
            if (answer[num] == correct[num])
            {
                return Check(answer, correct, num + 1);
            }
            // 大きいと1を返す
            else if (answer[num] > correct[num])
            {
                return 1;
            }
            // 小さいと-1を返す
            else
            {
                return -1;
            }
        }
    }
}
```