public RaceFlag JudgeRace()
        {
            RaceFlag flag       = RaceFlag.None;
            float    distance   = player.GetDistance();
            int      durability = player.car.GetDurability();

            Console.WriteLine($"플레이어 현재 거리 {distance}m, 남은 내구도 {durability}");
            if (distance > 1000f)
            {
                Console.WriteLine("플레이어가 승리했습니다!");
                flag = RaceFlag.DistanceWin;
            }
            else if (durability < 0)
            {
                Console.WriteLine("플레이어가 패배했습니다!");
                flag = RaceFlag.DurabiltyLose;
            }

            distance   = ai.GetDistance();
            durability = ai.car.GetDurability();
            Console.WriteLine($"AI 현재 거리 {distance}m, 남은 내구도 {durability}");
            if (distance > 1000f)
            {
                Console.WriteLine("AI가 승리했습니다!");
                flag = RaceFlag.DistanceLose;
            }
            else if (durability < 0)
            {
                Console.WriteLine("AI가 패배했습니다!");
                flag = RaceFlag.DurabiltyWin;
            }

            return(flag);
        }
        public void EndRace(RaceFlag flag)
        {
            Console.WriteLine();
            Console.WriteLine("경기 종료");
            float distance   = player.GetDistance();
            int   durability = player.car.GetDurability();

            if (flag == RaceFlag.DistanceWin)
            {
                distance = distance - ai.GetDistance();
                Console.WriteLine($"플레이어가 {distance}m 만큼 앞섬");
            }
            else if (flag == RaceFlag.DurabiltyWin)
            {
                durability = durability - ai.car.GetDurability();
                Console.WriteLine($"플레이어가 {durability} 내구도 앞섬");
            }
            else if (flag == RaceFlag.DistanceLose)
            {
                distance = ai.GetDistance() - distance;
                Console.WriteLine($"AI가 {distance}m 만큼 앞섬");
            }
            else if (flag == RaceFlag.DurabiltyLose)
            {
                durability = ai.car.GetDurability() - durability;
                Console.WriteLine($"AI가 {durability} 내구도 앞섬");
            }
            Console.WriteLine($"플레이어 충돌 수 : {player.GetCrashCnt()}");
            Console.WriteLine($"AI 충돌 수 : {ai.GetCrashCnt()}");
        }
        public void StartRace()
        {
            Console.Clear();
            Console.WriteLine("경기 시작!");
            while (true)
            {
                Console.ReadLine(); // 누를 때마다 진행

                Random rand        = new Random();
                int    mistakeRate = rand.Next(0, 100);
                int    damage      = rand.Next(1, 5);
                float  distance    = 0;
                if (mistakeRate <= 25) // 플레이어턴
                {
                    Console.Write("!! 플레이어가 ");
                    player.Mistake(damage);
                }
                else
                {
                    distance = player.GetSpeed() * 0.2f;
                    player.SetDistance(distance);
                }

                mistakeRate = rand.Next(0, 100);
                damage      = rand.Next(1, 5);
                if (mistakeRate <= 33) // 인공지능턴
                {
                    Console.Write("!! AI가 ");
                    ai.Mistake(damage);
                }
                else
                {
                    distance = ai.GetSpeed() * 0.2f;
                    ai.SetDistance(distance);
                }

                RaceFlag flag = JudgeRace();
                if (flag == RaceFlag.DistanceWin || flag == RaceFlag.DistanceLose || flag == RaceFlag.DurabiltyWin || flag == RaceFlag.DurabiltyLose)
                {
                    EndRace(flag);
                    Console.ReadLine();
                    break;
                }
            }
        }