石取りゲームを C言語(C#)で写経してみました。

 

石取りゲームはいろいろな言語で写経してみましたが、

プログラムを実行して遊んでみてもなかなか勝てませんね。

 

static void Main(string[] args)
        {
            int Kazu = 20; //石の数
            const int Min = 1;  //取れる最少値
            const int Max = 3;  //取れる最大値
            int n;

            Console.WriteLine("***** GAME START! *****\n");
            while(true)
            {
                try
                {
                    Console.WriteLine("left: " + Kazu);
                    Console.Write("how many do you get? (" + Min + " - " + Max +":)");
                    string s = Console.ReadLine();
                    n = int.Parse(s);
                }
                catch
                {
                    n = Min;
                }
                if (n < Min) n = Min;
                if (n > Max) n = Max;
                Kazu -= n;
                if (Kazu < 0) {Kazu = 0;}
                Console.WriteLine("you get " + n + " stones.");
                Console.WriteLine("left; " + Kazu);
                if (Kazu == 0)
                {
                    Console.WriteLine("\nSorry, you lost...\n");
                    break;
                }
                int n2 = (Kazu -1) % (Min + Max);
                if (n2 < Min) n2 = Min;
                if (n2 > Max) n2 = Max;
                Kazu -= n2;
                if (Kazu < 0) {Kazu = 0;}
                Console.WriteLine("I GOT " + n2 + " stones.");
                if (Kazu == 0)
                {
                    Console.WriteLine("\nCongratulations! YOU WIN!!\n");
                    break;

                }
            }
            Console.Write("(TYPE ANY KEY)");


            Console.ReadKey();
        }