Esempio n. 1
0
        // Volby: move, help, generalHelp, ondo, redo, load, save
        public bool UzivatelskeVolby(out bool provedenTah, out bool potlacitChybu)     // <----- pomocí výstupního bool parametru( "out bool provedenTah" ) si z metody UzivatelskeVolby vytáhneme informaci o tom, jestli byl proveden tah........
        {                                                                              // ........ ta proměnná bude true pouze, pokud bude skutečně proveden tah  ==> pokud nebyl proveden tah, nezmění se hráč, který je na tahu
            provedenTah   = false;
            potlacitChybu = false;                                                     // ......... DOVYSVĚTLIT !!!!!!!!!!!!!!!
            int[] Tah;                                                                 // do promenne 'command' se vlozi "return Command.Move"(=táhni) nebo "return Command.GeneralHelp"  +  do promenne 'int[] Tah' se vlozi TAH z "out int[] Vlozeno_coords"  (<--- všechno viz UserCmmunication metoda Volba())
            UserCommunication.Command command = usCom.Volba(hracNaTahu == 1, out Tah); // provede se to, co je v podmince metody Volba, ale hodnota(1  V -1) pro tu metodu se vezme tady z r11
            switch (command)
            {
            case UserCommunication.Command.Move:
                provedenTah = ProvedTah(Tah);
                return(provedenTah);

            case UserCommunication.Command.GeneralHelp:
                usCom.VypisZpravu("\n Zadán požadavek o nápovědu všech tahů", false, ConsoleColor.Green);           // ....... DOVYSVĚTLIT CELÉ !!!!!!!!!!!!!!!!!

                brain = new ArtificialIntelligence(Nard, 5, hracNaTahu);
                brain.VypocitejNejlepsiTah();
                int[] vybranyTah = brain.NejlepsiTah;
                usCom.VypisZpravu(string.Format("    Nejlepší možný tah je: {0}{1} -> {2}{3}\n", (char)(vybranyTah[1] + 'A'), (char)(vybranyTah[0] + '1'), (char)(vybranyTah[5] + 'A'), (char)(vybranyTah[4] + '1')), false, ConsoleColor.Green);
                potlacitChybu = true;
                return(false);

            case UserCommunication.Command.Undo:
            {
                bool proveden = Nard.TahZpet();
                potlacitChybu = true;
                if (proveden)
                {
                    vypisTahu   = "Proveden tah zpět";
                    provedenTah = true;
                }
                else
                {
                    usCom.VypisZpravu("Již nelze provádět tahy vpřed. Jsme na začátku hry.", false, ConsoleColor.Red);
                }
                return(proveden);
            }

            case UserCommunication.Command.Redo:
            {
                bool proveden = Nard.TahVpred();
                potlacitChybu = true;
                if (proveden)
                {
                    vypisTahu   = "Proveden tah vpřed";
                    provedenTah = true;
                }
                else
                {
                    usCom.VypisZpravu("Již nelze provádět tahy vpřed. Jsme na začátku hry.", false, ConsoleColor.Red);
                }
                return(proveden);
            }

            case UserCommunication.Command.Load:
                if (files.LoadGame("default.xml", out Board newBoard, out int newPlayerOnMove, out int player1, out int player2))              // přidáno použití této metody, která je vytvořena ve Files.cs
                {
                    Nard               = newBoard;
                    hracNaTahu         = newPlayerOnMove;
                    inteligenceBileho  = player1;
                    inteligenceCerneho = player2;

                    usCom.VypisZpravu("Hra byla načtena", true, ConsoleColor.Green);        // tato zpráva se vypíše po:  1.načtení Desky, 2.načtení Hráče na TAHU, 3.-4. načtení KDO hraje za Bílé a za Černé
                }
                else
                {
                    usCom.VypisZpravu("Uloženou hru se nepodařilo načíst", true, ConsoleColor.Red);
                }
                return(true);