예제 #1
0
        static void Main()
        {
            string locked     = "";
            string directions = "";
            string awards     = "";

            Console.WriteLine("Risoluzione problema scacchi");
            Console.WriteLine();
            Console.WriteLine("Inserire coordinate limiti campo");
            Console.Write("Inserire x e y separando con la virgola -->");
            var limit = Adding.CreateCoordinateByString("(" + Console.ReadLine().Trim() + ")");

            Console.WriteLine();

            Console.WriteLine("Inserire coordinate della posizione di inizio");
            Console.Write("Inserire x e y separando con la virgola -->");
            var start = Adding.CreateCoordinateByString("(" + Console.ReadLine().Trim() + ")");

            Console.WriteLine();

            Console.WriteLine("Inserire coordinate della posizione di arrivo");
            Console.Write("Inserire x e y separando con la virgola -->");
            var arrive = Adding.CreateCoordinateByString("(" + Console.ReadLine().Trim() + ")");

            Console.WriteLine();

            Console.WriteLine("Inserire coordinate celle bloccate");
            do
            {
                Console.Write("Inserire x e y separando con la virgola (! =stop) -->");
                string temp = Console.ReadLine().Trim();
                if (temp[0] != '!')
                {
                    locked += "(" + temp + ")";
                }
                else
                {
                    break;
                }
            } while (true);

            var listLocked = Adding.CreateLockedCells(locked);

            Console.WriteLine();
            Console.WriteLine("Inserire direzioni consentite: seguendo la rosa dei venti");
            Console.WriteLine("Direzioni possibili:(nne)(ene)(ese)(sse)(nno)(ono)(oso)(sso)");
            do
            {
                Console.Write("Inserire direzione (! =stop) -->");
                string temp = Console.ReadLine().Trim();
                if (temp[0] != '!')
                {
                    directions += "(" + temp + ")";
                }
                else
                {
                    break;
                }
            } while (true);

            var listDirections = Adding.CreateDirections(directions);

            Console.WriteLine();
            Console.WriteLine("Inserire coordinate dei premi e penalità, x e y e valore premio separando con la virgola ");
            do
            {
                Console.Write("Inserire premio (! =stop) -->");
                string temp = Console.ReadLine().Trim();
                if (temp[0] != '!')
                {
                    awards += "(" + temp + ")";
                }
                else
                {
                    break;
                }
            } while (true);

            var listAward = Adding.CreateAwards(awards);

            Console.WriteLine();
            Console.WriteLine("Possibili percorsi:");
            Console.WriteLine();


            MyChessBoard chess = new MyChessBoard
                                 (
                start, arrive, limit, listLocked, listDirections
                                 );


            Console.WriteLine();
            foreach (var list in chess)
            {
                List <int> containedAwards = new List <int>();
                string     toprint         = "";
                int        sommaPremi      = 0;
                foreach (var node in list)
                {
                    toprint += node.ToString();
                    foreach (var premio in listAward)
                    {
                        if (node.Equals(premio.Key))
                        {
                            containedAwards.Add(premio.Value);
                        }
                    }
                }
                Console.Write($"{ toprint} =contiene i premi: ");
                if (containedAwards.Count > 0)
                {
                    foreach (var valore in containedAwards)
                    {
                        Console.Write($"{valore}, ");
                        sommaPremi += valore;
                    }
                    Console.WriteLine($" ={sommaPremi}");
                }
                else
                {
                    Console.WriteLine("nessuno");
                }
            }

            Console.ReadLine();
        }