コード例 #1
0
        public void ZobrazZpravuPoBitve(bool jeHracUtocnik, bool vyhral, Provincie utociciProvincie, Provincie oblehanaProvincie, Jednotka[] utociciArmada, Jednotka[] puvodniUtociciArmada, Jednotka[] braniciArmada, Jednotka[] puvodniBraniciArmada)
        {
            Hra.ZobrazPrehled(this, true);

            if (jeHracUtocnik)
            {
                if (vyhral)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("             ÚTOK NA PROVINCII {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Útok na provincii {0} - {1} byl úspěšný!", oblehanaProvincie.JmenoProvincie, oblehanaProvincie.Vlastnik.Jmeno);
                    Console.WriteLine("Provincie {0} byla obsazena", oblehanaProvincie.JmenoProvincie);
                    Console.ResetColor();
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("             ÚTOK NA PROVINCII {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Útok na provincii {0} - {1} selhal!", oblehanaProvincie.JmenoProvincie, oblehanaProvincie.Vlastnik.Jmeno);
                    Console.WriteLine("Naše jednotky byly poraženy");
                    Console.ResetColor();
                }
            }
            else
            {
                if (vyhral)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("             OBRANA PROVINCIE {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Na naší provincii {0} zaútočil {1} z provincie {2}", oblehanaProvincie.JmenoProvincie, utociciProvincie.Vlastnik.Jmeno, utociciProvincie.JmenoProvincie);
                    Console.WriteLine("Naše provincie byla ubráněna!");
                    Console.ResetColor();
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("             OBRANA PROVINCIE {0}\n", oblehanaProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Na naší provincii {0} zaútočil {1} z provincie {2}", oblehanaProvincie.JmenoProvincie, utociciProvincie.Vlastnik.Jmeno, utociciProvincie.JmenoProvincie);
                    Console.WriteLine("Naše provincie byla obsazena!");
                    Console.ResetColor();
                }
            }

            Console.WriteLine("\nNaše jednotky:");
            for (int i = 0; i < puvodniUtociciArmada.Length; i++)
            {
                Jednotka j = puvodniUtociciArmada[i];
                Console.WriteLine("{0}: {1}  -{2}", j.Jmeno, j.Pocet, j.Pocet - utociciArmada[i].Pocet);
            }

            Console.WriteLine("\n\nNepřátelské jednotky:");
            for (int i = 0; i < puvodniBraniciArmada.Length; i++)
            {
                Jednotka j = puvodniBraniciArmada[i];
                Console.WriteLine("{0}: {1}  -{2}", j.Jmeno, j.Pocet, j.Pocet - braniciArmada[i].Pocet);
            }

            Console.WriteLine("\nENTER");
            Console.ReadLine();
        }
コード例 #2
0
        public void PosliJednotky(Provincie cilovaProvincie, Jednotka[] armada)
        {
            //Pokud je ćilová provincie naše - příjme jednokty - !zaútočí
            if (Hra.AktualniHrac.SeznamProvincii.IndexOf(cilovaProvincie) != -1)
            {
                if (Hra.AktualniHrac == Hra.Player)
                {
                    Hra.ZobrazPrehled(Hra.Player, true);

                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("Jednotky z provincie {0} dorazily do provincie {1}", JmenoProvincie, cilovaProvincie.JmenoProvincie);
                    Hra.VypisArmadu(armada.ToList());
                    Console.ResetColor();

                    Console.WriteLine("\n\nENTER");
                    Console.ReadLine();
                }

                cilovaProvincie.PrijmiJednotky(armada);
            }
            else
            {
                ZautocNaProvincii(cilovaProvincie, armada.ToList());
            }
        }
コード例 #3
0
        public void ZvysPriorituProvincie(Provincie provincieProInkrementaci, int hodnota)
        {
            Hrac vlastnik       = provincieProInkrementaci.Vlastnik;
            int  indexVlastnika = Souperi.IndexOf(vlastnik);
            int  indexProvincie = vlastnik.SeznamProvincii.IndexOf(provincieProInkrementaci);

            PriorityProvinciiSouperu[indexVlastnika][indexProvincie] += hodnota;
        }
コード例 #4
0
        public override void VyberJednotkyProPodporu(Provincie cilovaProvincie)
        {
            List <Jednotka> armada = VyberJednotky(null);

            if (armada != null)
            {
                Hra.AktualniProvincie.PridejJednotkyProPodporu(armada.ToArray());
                Hra.AktualniProvincie.PridejProvincieProPodporu(cilovaProvincie);
            }
            else
            {
            }
        }
コード例 #5
0
        public override void VyberJednoktyDoBoje(Provincie nepratelskaProvincie)
        {
            List <Jednotka> armada = VyberJednotky(null);

            if (armada != null)
            {
                Hra.AktualniProvincie.PridejJednotkyDoUtoku(armada.ToArray());
                Hra.AktualniProvincie.PridejProvincieProUtok(nepratelskaProvincie);
            }
            else
            {
            }
        }
コード例 #6
0
        protected override Provincie ZjistiVlastnenouProvincii()
        {
            Provincie vlastnenaProvincie = null;

            foreach (Provincie p in Hra.SeznamProvincii)
            {
                if (this == p.Ninjove || this == p.NinjoveMimoProvincii)
                {
                    vlastnenaProvincie = p;
                }
            }

            return(vlastnenaProvincie);
        }
コード例 #7
0
        public void PrepravSuroviny(int[] suroviny, Provincie vybranaProvincie)
        {
            if (Hra.AktualniHrac == Hra.Player)
            {
                Hra.ZobrazPrehled(Hra.Player, true);

                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine("Suroviny z provincie {0} byly doručeny do provincie {1}\n", JmenoProvincie, vybranaProvincie.JmenoProvincie);
                Console.WriteLine("Zlato: {0}  Dřevo: {1}  Rýže: {2}\n", suroviny[0], suroviny[1], suroviny[2]);
                Console.ResetColor();

                Console.WriteLine("ENTER");
                Console.ReadLine();
            }
            vybranaProvincie.PrepoctiSuroviny(suroviny[0], suroviny[1], suroviny[2]);
        }
コード例 #8
0
        public virtual void VyslatNinju(Provincie nepratelskaProvincie)
        {
            Hra.AktualniBudova.ZobrazInformace();
            Console.WriteLine("Vyslat ninju do: {1}, {0}\n", nepratelskaProvincie.Vlastnik.Jmeno, nepratelskaProvincie.JmenoProvincie);

            if (Hra.AktualniProvincie.Ninjove.Pocet == 0)
            {
                Console.WriteLine("Nejsou dostupní žádní ninjové\n");

                Console.WriteLine("1 -> Zpět");

                int volba = Hra.VyberZnabidky(1);

                ((Hrad)Hra.AktualniBudova).VyberAkci();
            }
            else
            {
                Console.WriteLine("Ninjové: {0}\n", Hra.AktualniProvincie.Ninjove.Pocet);

                Console.WriteLine("1 -> Vyslat ninju!");
                Console.WriteLine("2 -> Zpět");

                int volba = Hra.VyberZnabidky(2);

                switch (volba)
                {
                case 1:
                    Hra.AktualniBudova.ZobrazInformace();
                    Hra.AktualniProvincie.PridejProvinciiProSpehovani(nepratelskaProvincie);

                    Hra.AktualniProvincie.PridejNinjyMimoProvicnii(1);
                    Hra.AktualniProvincie.Ninjove.PridejPocet(-1);

                    Console.WriteLine("Ninja byl poslán do provincie {1} - {0}", nepratelskaProvincie.Vlastnik.Jmeno, nepratelskaProvincie.JmenoProvincie);

                    Console.WriteLine("\n1 -> Zpět");
                    volba = Hra.VyberZnabidky(1);

                    ((Hrad)Hra.AktualniProvincie.Budovy[0]).VyberAkci();
                    break;

                case 2: ((Hrad)Hra.AktualniBudova).VyberAkci(); break;
                }
            }
        }
コード例 #9
0
        protected virtual Provincie ZjistiVlastnenouProvincii()
        {
            Provincie vlastnenaProvincie = null;

            foreach (Provincie p in Hra.SeznamProvincii)
            {
                foreach (Jednotka j in p.Jednotky)
                {
                    if (j == this)
                    {
                        vlastnenaProvincie = p;
                        break;
                    }
                }
            }

            return(vlastnenaProvincie);
        }
コード例 #10
0
        protected Provincie ZjistiVlastnenouProvincii()
        {
            Provincie vlastnenaProvincie = null;

            foreach (Provincie p in Hra.SeznamProvincii)
            {
                foreach (Budova b in p.Budovy)
                {
                    if (b == this)
                    {
                        vlastnenaProvincie = p;
                        break;
                    }
                }
            }

            return(vlastnenaProvincie);
        }
コード例 #11
0
        public void VyberZpravu(Provincie vybranaProvincie, bool lokaceCelaMapa)
        {
            if (lokaceCelaMapa)
            {
                Console.Clear();
                Hra.ZobrazPrehled(Hra.Player, true);
            }
            else
            {
                ((Hrad)Hra.AktualniProvincie.Budovy[0]).ZobrazInformace();
            }
            ////////////////////////////////////////////////////////////////////

            bool je = false;

            foreach (Zprava zprava in ZpravyNinju)
            {
                if (zprava.JmenoProvincie == vybranaProvincie.JmenoProvincie)
                {
                    ZobrazVybranouZpravu(zprava);
                    je = true;
                    break;
                }
            }

            ///////////////////////////////////////////////////////////////////////

            if (je == false)
            {
                Console.WriteLine("Provincie nebyla špehována - vyšli do ni Ninju aby o ní poskytl informace");
            }

            Console.WriteLine("\n1 -> Zpět");

            int volba = Hra.VyberZnabidky(1);


            if (!lokaceCelaMapa)
            {
                ((Hrad)Hra.AktualniProvincie.Budovy[0]).VyberAkci();
            }
            // else = Hra -> ZobrazNabidku(vNepratelskeProvincii)
        }
コード例 #12
0
        private void VyberSurovinyProProvincii(Provincie vybranaProvincie)
        {
            int[]    suroviny    = new int[3];
            string[] jmenaSurovn = { "Zlato: ", "Dřevo: ", "Rýže: " };
            int[]    surovinyMax = { Hra.AktualniProvincie.Zlato, Hra.AktualniProvincie.Drevo, Hra.AktualniProvincie.Ryze };

            for (int i = 0; i <= suroviny.Length; i++)
            {
                ZobrazInformace();

                Console.WriteLine("Poslat suroviny do {0}", vybranaProvincie.JmenoProvincie);
                Console.WriteLine("Vybrané suroviny: Zlato: {0}  Dřevo: {1}  Rýže: {2}", suroviny[0], suroviny[1], suroviny[2]);

                if (i < suroviny.Length)
                {
                    suroviny[i] = Hra.CtiCislo(jmenaSurovn[i], surovinyMax[i]);
                }
            }

            Console.WriteLine("\n1 -> Polsat suroviny");
            Console.WriteLine("2 -> Zpět");

            volba = Hra.VyberZnabidky(2);

            switch (volba)
            {
            case 1:
                Hra.AktualniProvincie.PridejProvinciiProDovozSurovin(vybranaProvincie);
                Hra.AktualniProvincie.PridejSurovinyProDovoz(suroviny);
                Hra.AktualniProvincie.PrepoctiSuroviny(-suroviny[0], -suroviny[1], -suroviny[2]);

                ZobrazInformace();
                Console.WriteLine("Suroviny jsou na cestě do provincie {0}\n", vybranaProvincie.JmenoProvincie);
                Console.WriteLine("1 -> Zpět");

                volba = Hra.VyberZnabidky(1);

                PoslatSuroviny();
                break;

            case 2: PoslatSuroviny(); break;
            }
        }
コード例 #13
0
        public void Spehuj(Provincie nepratelskaProvincie) //NinjaMimoProvincii
        {
            string jmenoVladce    = nepratelskaProvincie.Vlastnik.Jmeno;
            string jmenoProvincie = nepratelskaProvincie.JmenoProvincie;
            int    pocetObyvatel  = nepratelskaProvincie.Populace;
            int    levelHradeb    = 0;

            //Level Hradeb - zjištění zda soupeř postavil hradby
            Budova hradby = new Budova();

            foreach (Budova budova in nepratelskaProvincie.Budovy)
            {
                if (budova is Hradby)
                {
                    levelHradeb = hradby.Level;
                }
            }

            //Kontrola pokud již provincie špehována byla :)
            if (Hra.AktualniHrac.ZpravyNinju.Count > 0)
            {
                int index = -1;
                for (int i = 0; i < Hra.AktualniHrac.ZpravyNinju.Count; i++)
                {
                    if (Hra.AktualniHrac.ZpravyNinju[i].JmenoProvincie == nepratelskaProvincie.JmenoProvincie)
                    {
                        index = i;
                    }
                }

                //V cyklu nelze odebrat element z kolekce --> chyba - změna délky kolekce
                if (index != -1)
                {
                    Hra.AktualniHrac.ZpravyNinju.RemoveAt(index);
                }
            }

            //Návrat
            Hra.AktualniProvincie.Ninjove.PridejPocet(1);
            Pocet--; //ninja mimo provincii

            Hra.AktualniHrac.ZpravyNinju.Add(new Zprava(jmenoVladce, jmenoProvincie, pocetObyvatel, levelHradeb));
        }
コード例 #14
0
        public bool JeOdemknutaVProvincii()
        {
            bool jeOdemknuta = false;

            Provincie vlastnenaProvincie = VlastnenaProvincie;

            if (vlastnenaProvincie != null)
            {
                foreach (Budova b in vlastnenaProvincie.Budovy)
                {
                    if (b == this)
                    {
                        jeOdemknuta = true;
                        break;
                    }
                }
            }

            return(jeOdemknuta);
        }
コード例 #15
0
        protected Budova ZjistiVlastnenouBudovu()
        {
            Provincie vlastnenaProvincie = VlastnenaProvincie;
            Budova    vlastnenaBudova    = null;

            foreach (Budova b in vlastnenaProvincie.Budovy)
            {
                if (b.JednotkyProReferenci != null)
                {
                    foreach (Jednotka j in b.JednotkyProReferenci)
                    {
                        if (j.Jmeno == Jmeno)
                        {
                            vlastnenaBudova = b;
                            break;
                        }
                    }
                }
            }

            return(vlastnenaBudova);
        }
コード例 #16
0
        private void VyberNepratelskouProvincii()
        {
            //Výběr nepřátelské provincie
            ZobrazInformace();

            Console.WriteLine("{0} \n", souper.Jmeno);

            souper.VypisProvincieProNabidku();
            Console.WriteLine("\n{0} -> Zpět", souper.SeznamProvincii.Count + 1);

            volba = Hra.VyberZnabidky(souper.SeznamProvincii.Count + 1);

            if (volba == souper.SeznamProvincii.Count + 1)
            {
                NaplanujUtok();
            }
            else
            {
                vybranaProvincie = souper.SeznamProvincii[volba - 1];
                VyberAkci();
            }
        }
コード例 #17
0
        private void PostavJednotky()
        {
            Provincie p = Hra.AktualniProvincie;

            Jednotka[] JednotkyProRekrutovani = p.Jednotky.ToArray();

            int nahoda = Hra.NahodnyGenerator.Next(0, 2);

            if (nahoda == 1)
            {
                Array.Reverse(JednotkyProRekrutovani);
            }

            int podminkaZlata = 0;
            int podminkaDreva = 0;

            if (zvoleneUtocneKolo)
            {
                bool jeBudovaKrozsireni = false;
                foreach (Budova b in Hra.AktualniProvincie.Budovy)
                {
                    if (!(b is Domy) && b.JsouSurovinyNaRozsireni())
                    {
                        jeBudovaKrozsireni = true;
                    }
                }

                if (jeBudovaKrozsireni)
                {
                    podminkaZlata = 500;
                    podminkaDreva = 500;
                }
            }

            while (true)
            {
                bool lzeRekrutovatAsponJednuJednotku = false;

                foreach (Jednotka j in JednotkyProRekrutovani)
                {
                    Obchoduj();

                    Budova vlastnenaBudova = j.VlastnenaBudova;

                    if (j.JeOdemknutaVbudove() == false || vlastnenaBudova.Level == 0)
                    {
                        if (vlastnenaBudova is Hrad)
                        {
                            if (Hra.Den > 5)
                            {
                                RozsirBudovu(vlastnenaBudova);
                            }
                        }
                        else
                        {
                            RozsirBudovu(vlastnenaBudova);
                        }
                    }

                    if (j.JeOdemknutaVbudove() == true && vlastnenaBudova.Level != 0)
                    {
                        if (Hra.AktualniProvincie.Zlato <= podminkaZlata || Hra.AktualniProvincie.Drevo <= podminkaDreva)
                        {
                            break;
                        }

                        if (((p.MaxPopulace - Convert.ToInt32(Math.Round(((double)p.Populace / 100) * 20))) <= p.Populace) || (Hra.AktualniProvincie.Populace == Hra.AktualniProvincie.MaxPopulace))
                        {
                            Budova domy = p.Budovy[4];
                            if (domy.JsouSurovinyNaRozsireni())
                            {
                                RozsirBudovu(domy);                                 //Domy
                            }
                            else
                            {
                                break;
                            }
                        }

                        int puvodniPocet = j.Pocet;

                        j.NaverbujJednotky(podminkaZlata, podminkaDreva);

                        if (puvodniPocet != j.Pocet)
                        {
                            lzeRekrutovatAsponJednuJednotku = true;
                        }
                    }
                }

                if (!lzeRekrutovatAsponJednuJednotku)
                {
                    break;
                }

                if (((p.MaxPopulace - Convert.ToInt32(Math.Round(((double)p.Populace / 100) * 20))) <= p.Populace) || (Hra.AktualniProvincie.Populace == Hra.AktualniProvincie.MaxPopulace))
                {
                    Budova domy = p.Budovy[4];
                    if ((!domy.JsouSurovinyNaRozsireni()) || domy.Level == domy.MaxLevel)
                    {
                        break;
                    }
                }

                //if (zvoleneUtocneKolo == false && Hra.Den > 5) break;

                Array.Reverse(JednotkyProRekrutovani);
            }

            Hra.AktualniProvincie.Ninjove.NaverbujJednotky(podminkaZlata, podminkaDreva);
        }
コード例 #18
0
 public void PridejProvinciiProDovozSurovin(Provincie vybranaProvincie)
 {
     ProvincieProDovozSurovin.Add(vybranaProvincie);
 }
コード例 #19
0
 public void PridejProvinciiProSpehovani(Provincie nepratelskaProvincie)
 {
     NepratelskeProvincieProSpehovani.Add(nepratelskaProvincie);
 }
コード例 #20
0
 public void PridejProvincieProPodporu(Provincie provincie)
 {
     ProvincieProPodporu.Add(provincie);
 }
コード例 #21
0
 public void PridejProvincieProUtok(Provincie nepratelskaProvincie)
 {
     ProvincieProUtok.Add(nepratelskaProvincie);
 }
コード例 #22
0
        private static void ZahajHru()
        {
            Console.Clear();

            //Deklarace provincií

            Provincie owari  = new Provincie("Owari");
            Provincie suruga = new Provincie("Suruga");
            Provincie totomi = new Provincie("Tótomi");
            Provincie mino   = new Provincie("Mino");
            Provincie mikawa = new Provincie("Mikawa");
            Provincie kai    = new Provincie("Kai");
            Provincie omi    = new Provincie("Ōmi");
            Provincie ecizen = new Provincie("Echizen");
            Provincie ecigo  = new Provincie("Echigo");
            Provincie aki    = new Provincie("Aki");
            Provincie izu    = new Provincie("Izu");
            Provincie izumo  = new Provincie("Izumo");

            Provincie[] seznamProvincii = { owari, suruga, totomi, mino, mikawa, kai, omi, ecizen, ecigo, aki, izu, izumo };


            //Deklarace vládců - typ Pocitac

            Hrac[] vladci = new Hrac[11];
            vladci[0]  = new Pocitac("Nobunaga Oda", new Provincie[] { owari });
            vladci[1]  = new Pocitac("Imagawa Jošimoto", new Provincie[] { suruga, totomi });
            vladci[2]  = new Pocitac("Dosan Saito", new Provincie[] { mino });
            vladci[3]  = new Pocitac("Iejasu Tokugawa", new Provincie[] { mikawa });
            vladci[4]  = new Pocitac("Azai Nagamasa", new Provincie[] { omi });
            vladci[5]  = new Pocitac("Asakura Yoshikage", new Provincie[] { ecizen });
            vladci[6]  = new Pocitac("Shingen Takeda", new Provincie[] { kai });
            vladci[7]  = new Pocitac("Kenshin Uesugi", new Provincie[] { ecigo });
            vladci[8]  = new Pocitac("Motonari Mori", new Provincie[] { aki });
            vladci[9]  = new Pocitac("Soun Hojo", new Provincie[] { izu });
            vladci[10] = new Pocitac("Amago Yoshihisa", new Provincie[] { izumo });


            //Vybraní si vládce za kterého bude hrát hráč - ostatní zůstanou typu Pocitac
            int indexVybranehoVladce = Hra.VyberVladce(vladci);

            vladci[indexVybranehoVladce] = new Hrac(vladci[indexVybranehoVladce].Jmeno, vladci[indexVybranehoVladce].SeznamProvincii.ToArray());

            //Deklarace hry
            Hra.DeklarujHru(vladci, seznamProvincii, indexVybranehoVladce);


            ///////////////////////////////////////////////////////////////////////////////////////
            //Hra
            while (true)
            {
                foreach (Hrac h in Hra.Vladci)
                {
                    h.Hraj();
                }


                Console.Clear();
                Console.WriteLine("Kolo ukončeno");
                Console.WriteLine("ENTER");
                Console.ReadLine();


                /////////////////////////////
                //Skončení kol - vyhodnocení:

                //Vyhodnocení produkce, špehování a přesunů suroviny atd atd atd atd
                foreach (Hrac h in Hra.Vladci)
                {
                    Hra.NastavAktualnihoHrace(h);

                    foreach (Provincie provinceVladce in h.SeznamProvincii)
                    {
                        Hra.NastavAktualniProvincii(provinceVladce);

                        //Vyhodnocení produkce
                        provinceVladce.PrijmiVyprodukovaneSuroviny();

                        //Vyhodnocení špehovacích požadavků
                        if (provinceVladce.NepratelskeProvincieProSpehovani.Count != 0)
                        {
                            foreach (Provincie provincieProSpehovani in provinceVladce.NepratelskeProvincieProSpehovani)
                            {
                                ((Ninja)provinceVladce.NinjoveMimoProvincii).JdiDoNepratelskeProvincie(provincieProSpehovani);
                            }
                            provinceVladce.VynulujProvincieProSpehovani();
                        }

                        //Vyhodnocení dovozních požadavků
                        if (provinceVladce.ProvincieProDovozSurovin.Count != 0)
                        {
                            int index = 0;
                            foreach (Provincie provincieProDovoz in provinceVladce.ProvincieProDovozSurovin)
                            {
                                provinceVladce.PrepravSuroviny(provinceVladce.SurovinyProDovoz[index], provincieProDovoz);
                                index++;
                            }
                            provinceVladce.VynulujProvincieASurovinyProDovoz();
                        }

                        //Vyhodnocení požadávků podpory
                        if (provinceVladce.ProvincieProPodporu.Count != 0)
                        {
                            for (int i = 0; i < provinceVladce.ProvincieProPodporu.Count; i++)
                            {
                                provinceVladce.PosliJednotky(provinceVladce.ProvincieProPodporu[i], provinceVladce.JednotkyProPodporu[i]);
                            }
                            provinceVladce.VynulujJednoktyAProvincieProPodporu();
                        }
                    }
                }


                //Vyhodnocení útočných požadavků  2. foreach kvůli změnám v kolekci hra.vládci
                //Kvůli změně kolekci

                bool pruchod = true;
                while (pruchod)
                {
                    pruchod = false;

                    foreach (Hrac utociciVladce in Hra.Vladci)
                    {
                        Hra.NastavAktualnihoHrace(utociciVladce);

                        foreach (Provincie utociciProvincie in utociciVladce.SeznamProvincii)
                        {
                            Hra.NastavAktualniProvincii(utociciProvincie);

                            if (utociciProvincie.ProvincieProUtok.Count != 0)
                            {
                                for (int i = 0; i < utociciProvincie.ProvincieProUtok.Count; i++)
                                {
                                    utociciProvincie.PosliJednotky(utociciProvincie.ProvincieProUtok[i], utociciProvincie.JednotkyDoUtoku[i]);
                                }

                                if (Hra.Vladci.Count == 1 || Hra.Player.SeznamProvincii.Count == 0)
                                {
                                    //utočící vládce porazil posledního vládce a stává se vítězem - hra končí
                                    Hra.ZobrazViteznouZpravu(utociciVladce);
                                }

                                utociciProvincie.VynulujProvincieAJednotkyProUtok();

                                pruchod = true;
                                break;
                            }
                        }

                        if (pruchod == true)
                        {
                            break;
                        }
                    }
                }

                //Zvyýší den o 1
                Hra.InkrementujDen();
            }
        }
コード例 #23
0
 public override void VyslatNinju(Provincie nepratelskaProvincie)
 {
     Hra.AktualniProvincie.PridejProvinciiProSpehovani(nepratelskaProvincie);
     Hra.AktualniProvincie.PridejNinjyMimoProvicnii(1);
     Hra.AktualniProvincie.Ninjove.PridejPocet(-1);
 }
コード例 #24
0
        public void PrepocitejPriorityProvinciiProNovehoVlastnika(Hrac novyVlastnik, Hrac byvalyVlastnik, Provincie obsazenaProvincie)
        {
            if (byvalyVlastnik != this)
            {
                int indexByvalehoVlastnika          = Souperi.IndexOf(byvalyVlastnik);
                int indexProvincieByvalehoVlastnika = byvalyVlastnik.SeznamProvincii.IndexOf(obsazenaProvincie);
                PriorityProvinciiSouperu[indexByvalehoVlastnika].RemoveAt(indexProvincieByvalehoVlastnika);
            }

            if (novyVlastnik != this)
            {
                int indexNovehoVlastnika = Souperi.IndexOf(novyVlastnik);
                PriorityProvinciiSouperu[indexNovehoVlastnika].Add(0);
            }
        }
コード例 #25
0
        private void ZagrajUtocneKolco()
        {
            Budova dojo = Hra.AktualniProvincie.Budovy[5];

            if (dojo.Level == 0)
            {
                int postavit = Hra.NahodnyGenerator.Next(0, 2);

                if (postavit == 1)
                {
                    while (dojo.Level != 3 && dojo.JsouSurovinyNaRozsireni())
                    {
                        RozsirBudovu(dojo);
                    }
                }
            }


            PostavJednotky();

            List <Hrac> souperiSnejvyssiPrioritou = new List <Hrac>();

            int nejvyssiPrioritaSouperu = PrioritySouperu.Max();

            //Do pole souepriSnejvysiiBlabla přida soupeře se stejnou prioritou ktera je nejvyssi
            for (int i = 0; i < Souperi.Count; i++)
            {
                if (PrioritySouperu[i] == nejvyssiPrioritaSouperu)
                {
                    souperiSnejvyssiPrioritou.Add(Souperi[i]);
                }
            }

            int  indexVybranehoSoupere = Hra.NahodnyGenerator.Next(0, souperiSnejvyssiPrioritou.Count);
            Hrac vybranySouper         = souperiSnejvyssiPrioritou[indexVybranehoSoupere];

            int indexVybranehoSoupereVkolekci = Souperi.IndexOf(vybranySouper);


            //Do poleProvincieSnejvyssiPrioritou přidá provincie s prioritou té nejvyšší
            int nejvyssiPrioritaProvincie = PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci].Max();

            List <Provincie> provincieSnejvyssiPrioritou = new List <Provincie>();

            for (int i = 0; i < vybranySouper.SeznamProvincii.Count; i++)
            {
                if (PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci][i] == nejvyssiPrioritaProvincie)
                {
                    provincieSnejvyssiPrioritou.Add(vybranySouper.SeznamProvincii[i]);
                }
            }


            int       indexVybraneProvincie         = Hra.NahodnyGenerator.Next(0, provincieSnejvyssiPrioritou.Count);
            Provincie vybranaProvincie              = provincieSnejvyssiPrioritou[indexVybraneProvincie];
            int       indexVybraneProvincieVkolekci = vybranySouper.SeznamProvincii.IndexOf(vybranaProvincie);



            //Kontrola zda byla provincie špehována
            Zprava zpravaOSpehovani = null;

            bool bylaSpehovana = false;

            foreach (Zprava z in ZpravyNinju)
            {
                if (vybranaProvincie.JmenoProvincie == z.JmenoProvincie)
                {
                    bylaSpehovana    = true;
                    zpravaOSpehovani = z;
                }
            }

            if (bylaSpehovana && zpravaOSpehovani.Stari < 4)
            {
                if (Hra.AktualniProvincie.Populace <= zpravaOSpehovani.PocetObyvatel)
                {
                    PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci][indexVybraneProvincieVkolekci]++;
                }
                int priorita = PriorityProvinciiSouperu[indexVybranehoSoupereVkolekci][indexVybraneProvincieVkolekci];

                if (Hra.AktualniProvincie.Populace >= zpravaOSpehovani.PocetObyvatel || priorita > 30)
                {
                    VyberJednoktyDoBoje(vybranaProvincie);
                }
            }
            else
            {
                Jednotka ninjove = Hra.AktualniProvincie.Ninjove;
                if (ninjove.Pocet != 0)
                {
                    VyslatNinju(vybranaProvincie);
                }
                else
                {
                    if (ninjove.JeOdemknutaVbudove() == false) //dojo
                    {
                        RozsirBudovu(ninjove.VlastnenaBudova);
                    }

                    if (ninjove.JeOdemknutaVbudove() == true)
                    {
                        ninjove.NaverbujJednotky();
                        if (ninjove.Pocet != 0)
                        {
                            VyslatNinju(vybranaProvincie);
                        }
                    }
                }
            }

            //Vyšpehuje ostatní vesnice
            if (Hra.AktualniProvincie.Ninjove.Pocet != 0)
            {
                List <Provincie> dalsiProvincieKeSpehovani = new List <Provincie>();
                foreach (Provincie p in Hra.SeznamProvincii)
                {
                    if (p.Vlastnik != this && Hra.AktualniProvincie.NepratelskeProvincieProSpehovani.IndexOf(p) == -1)
                    {
                        dalsiProvincieKeSpehovani.Add(p);
                    }
                }

                for (int i = 0; i < Hra.AktualniProvincie.Ninjove.Pocet; i++)
                {
                    if (dalsiProvincieKeSpehovani.Count == 0)
                    {
                        break;
                    }

                    int nahodnyIndexProvincie = Hra.NahodnyGenerator.Next(0, dalsiProvincieKeSpehovani.Count);

                    Provincie provincieKeSpehovani = dalsiProvincieKeSpehovani[nahodnyIndexProvincie];

                    VyslatNinju(vybranaProvincie);

                    dalsiProvincieKeSpehovani.RemoveAt(nahodnyIndexProvincie);
                }
            }
        }
コード例 #26
0
        private void ZagrajEkonomickeKolco()
        {
            //Změna budovy pro rozšíření podle dostatků suroviny

            Provincie p = Hra.AktualniProvincie;

            if (p.Budovy[5].Level == 0)
            {
                RozsirBudovu(p.Budovy[5]);                         //Dojo
            }
            List <int> indexyProVybraniBudov = new List <int>();

            for (int i = 0; i < p.Budovy.Count; i++)
            {
                if (i != 1 && i != 2)
                {
                    indexyProVybraniBudov.Add(i);
                }
            }


            List <Budova> budovyKrozsireni = new List <Budova>();

            budovyKrozsireni.Add(p.Budovy[1]); //pole
            budovyKrozsireni.Add(p.Budovy[2]); //pila

            for (int i = 0; i < indexyProVybraniBudov.Count; i++)
            {
                int index = Hra.NahodnyGenerator.Next(0, indexyProVybraniBudov.Count);
                budovyKrozsireni.Add(p.Budovy[indexyProVybraniBudov[index]]);
                indexyProVybraniBudov.RemoveAt(index);
            }

            int podminkaZustatekDreva = 0;
            int podminkaZustatekZlata = 0;

            if (zvoleneUtocneKolo == false)
            {
                if (Hra.Den <= 5)
                {
                    podminkaZustatekDreva = 1200;
                    podminkaZustatekZlata = 1200;
                }
                else
                {
                    podminkaZustatekDreva = 600;
                    podminkaZustatekZlata = 600;
                }
            }

            while (true)
            {
                bool lzePostaviAsponJednuBudovu = false;

                for (int i = 0; i < p.Budovy.Count; i++)
                {
                    //Určení budov ke stavbě
                    ///////////////////////////////////////////////////////////
                    //P.Budovy se může zvětit po vyzkoumání nových budov
                    Budova b = null;

                    if (i >= budovyKrozsireni.Count)
                    {
                        if (p.Budovy.Count > i)
                        {
                            b = p.Budovy[i];
                        }
                        else
                        {
                            int nahodnyIndex = Hra.NahodnyGenerator.Next(0, p.Budovy.Count);
                            b = p.Budovy[nahodnyIndex];
                        }
                    }
                    else
                    {
                        b = budovyKrozsireni[i];
                    }

                    //////////////////////////////////////////////////////
                    int puvodniLevel = b.Level;

                    Obchoduj();

                    //Výstavba
                    if (p.Zlato - b.CenaZlato >= podminkaZustatekZlata && p.Drevo - b.CenaDrevo >= podminkaZustatekDreva)
                    {
                        if (b is Pole || b is Pila)
                        {
                            int nahoda = Hra.NahodnyGenerator.Next(2, 5);

                            for (int j = 1; j < nahoda; j++)
                            {
                                if (p.Zlato - b.CenaZlato >= podminkaZustatekZlata && p.Drevo - b.CenaDrevo >= podminkaZustatekDreva)
                                {
                                    RozsirBudovu(b);
                                }
                            }
                        }

                        if (b is Domy)
                        {
                            if ((p.MaxPopulace - Convert.ToInt32(Math.Round((double)p.Populace / 100) * 20)) <= p.Populace || p.Populace == p.MaxPopulace)
                            {
                                RozsirBudovu(b);
                            }
                        }
                        else
                        {
                            RozsirBudovu(b);
                        }

                        if (puvodniLevel != b.Level)
                        {
                            lzePostaviAsponJednuBudovu = true;
                        }
                    }
                }

                if (!lzePostaviAsponJednuBudovu)
                {
                    break;
                }
            }
        }
コード例 #27
0
        private void ZautocNaProvincii(Provincie nepratelskaProvincie, List <Jednotka> utociciArmada)
        {
            Hrac utocnik = Vlastnik;
            Hrac obrance = nepratelskaProvincie.Vlastnik;

            List <Jednotka> braniciArmada = new List <Jednotka>();

            foreach (Jednotka j in nepratelskaProvincie.Jednotky)
            {
                if (j.Pocet > 0)
                {
                    braniciArmada.Add(j);
                }
            }

            Jednotka[] puvodniArmadaUtocnika = new Jednotka[utociciArmada.Count]; //Pro zprávu
            for (int i = 0; i < puvodniArmadaUtocnika.Length; i++)
            {
                puvodniArmadaUtocnika[i] = new Jednotka(utociciArmada[i]);
            }

            Jednotka[] puvodniArmadaObrance = new Jednotka[braniciArmada.Count]; //Pro zprávu
            for (int i = 0; i < puvodniArmadaObrance.Length; i++)
            {
                puvodniArmadaObrance[i] = new Jednotka(braniciArmada[i]);
            }

            //Útočník = A
            //Obránce = B

            nepratelskaProvincie.ZvysJednotkamObranuZhradeb(braniciArmada.ToArray());

            while (Hra.VratPocetArmady(utociciArmada) != 0 && Hra.VratPocetArmady(braniciArmada) != 0)
            {
                /*
                 * List<Jednotka> braniciArmadaReference = VyhodnotUtok(utociciArmada, braniciArmada);
                 * List<Jednotka> utociciArmadaReference = VyhodnotUtok(braniciArmada, utociciArmada);*/

                List <Jednotka> braniciArmadaReference = VvyhodnotUtok(utociciArmada, braniciArmada);
                List <Jednotka> utociciArmadaReference = VvyhodnotUtok(braniciArmada, utociciArmada);

                /*Console.WriteLine(Hra.VratPocetArmady(utociciArmada));
                 * Console.WriteLine(Hra.VratPocetArmady(braniciArmada));
                 * Console.WriteLine();*/

                for (int i = 0; i < braniciArmadaReference.Count; i++)
                {
                    braniciArmada[i].NastavPocet(braniciArmadaReference[i].Pocet);
                }
                for (int i = 0; i < utociciArmadaReference.Count; i++)
                {
                    utociciArmada[i].NastavPocet(utociciArmadaReference[i].Pocet);
                }


                /*Console.WriteLine(Hra.VratPocetArmady(utociciArmada));
                 * Console.WriteLine(Hra.VratPocetArmady(braniciArmada));
                 * Console.WriteLine();
                 * Console.WriteLine();*/
            }

            nepratelskaProvincie.NastavJednoktamObranuNaPuvodni(braniciArmada.ToArray());

            //Vyhodnocení bitvy
            if (Hra.VratPocetArmady(utociciArmada) > 0) //Vyhrála útočíci armáda
            {
                if (utocnik == Hra.Player)
                {
                    utocnik.ZobrazZpravuPoBitve(true, true, this, nepratelskaProvincie, utociciArmada.ToArray(), puvodniArmadaUtocnika, braniciArmada.ToArray(), puvodniArmadaObrance);
                }
                else
                if (obrance == Hra.Player)
                {
                    obrance.ZobrazZpravuPoBitve(false, false, this, nepratelskaProvincie, braniciArmada.ToArray(), puvodniArmadaObrance, utociciArmada.ToArray(), puvodniArmadaUtocnika);
                }

                Vlastnik.ObsadProvincii(nepratelskaProvincie);

                //Návrat armády
                nepratelskaProvincie.PrijmiJednotky(utociciArmada.ToArray());
            }
            else
            {
                if (utocnik == Hra.Player)
                {
                    utocnik.ZobrazZpravuPoBitve(true, false, this, nepratelskaProvincie, utociciArmada.ToArray(), puvodniArmadaUtocnika, braniciArmada.ToArray(), puvodniArmadaObrance);
                }
                else
                if (obrance == Hra.Player)
                {
                    obrance.ZobrazZpravuPoBitve(false, true, this, nepratelskaProvincie, braniciArmada.ToArray(), puvodniArmadaObrance, utociciArmada.ToArray(), puvodniArmadaUtocnika);
                }

                if (obrance is Pocitac)
                {
                    ((Pocitac)obrance).ZvysPriorituProvincie(this, 1);
                    ((Pocitac)obrance).ZvzsPriorituVladce(Vlastnik, 2);
                }
            }
        }
コード例 #28
0
        public void ObsadProvincii(Provincie porazenaProvincie)
        {
            Hrac porazenySouper = porazenaProvincie.Vlastnik;

            //Přepočítání priorit !!!!!!!!!!!!!!!!!!!!!!ZměnA

            foreach (Hrac h in Hra.Vladci)
            {
                if (h is Pocitac)
                {
                    ((Pocitac)h).PrepocitejPriorityProvinciiProNovehoVlastnika(this, porazenySouper, porazenaProvincie);
                }
            }

            porazenaProvincie.VynulujProvincieAJednotkyProUtok();
            porazenaProvincie.VynulujProvincieASurovinyProDovoz();
            porazenaProvincie.VynulujProvincieProSpehovani();
            porazenaProvincie.VynulujJednoktyAProvincieProPodporu();

            porazenaProvincie.Ninjove.NastavPocet(0);
            porazenaProvincie.NinjoveMimoProvincii.NastavPocet(0);

            foreach (Jednotka j in porazenaProvincie.Jednotky)
            {
                j.NastavPocet(0);
            }

            SeznamProvincii.Add(porazenaProvincie);
            porazenySouper.SeznamProvincii.Remove(porazenaProvincie);

            if (this is Pocitac)
            {
                ((Pocitac)this).ZvzsPriorituVladce(porazenySouper, 1);
            }
            if (porazenySouper is Pocitac)
            {
                ((Pocitac)porazenySouper).ZvysPriorituProvincie(porazenaProvincie, 2);
                ((Pocitac)porazenySouper).ZvzsPriorituVladce(this, 2);
            }

            bool vladceVyhlazen = false;

            if (porazenySouper.SeznamProvincii.Count == 0)
            {
                //Priority - dříve - referenční pole Soupeři majngot
                foreach (Hrac h in Hra.Vladci)
                {
                    if (h is Pocitac && h != porazenySouper)
                    {
                        ((Pocitac)h).OdeberSoupereZPrioritSouperuAprovincii(porazenySouper);
                    }
                }

                Hra.OdeberVladce(porazenySouper);
                vladceVyhlazen = true;

                //Přepočítá všem hráčům ve hře jejich soupeře
                Hra.PrepocitejSoupereVladcu();
            }

            if (this != Hra.Player && porazenySouper != Hra.Player)
            {
                Hra.VypisZpravuOobsazeni(Jmeno, porazenaProvincie.JmenoProvincie, porazenySouper.Jmeno, vladceVyhlazen);
            }
        }
コード例 #29
0
        public void JdiDoNepratelskeProvincie(Provincie nepratelksProvincie) //NinjaMimoProvincii
        {
            bool prezilCestu = true;

            Random r = new Random();

            Hrac vlastnikSpehovaneVesncie = nepratelksProvincie.Vlastnik;

            int procentualniNahoda = r.Next(1, 101);

            if (procentualniNahoda <= nepratelksProvincie.Ninjove.Pocet * 8)
            {
                prezilCestu = false;                                                              //40% šance na odhlaení ninjy (když má týpek 5 ninjů)
            }
            switch (prezilCestu)
            {
            case true:
            {
                Spehuj(nepratelksProvincie);

                if (Hra.AktualniHrac == Hra.Player)
                {
                    Hra.ZobrazPrehled(Hra.Player, true);
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("             ŠPEHOVÁNÍ PROVINCIE {0}\n", nepratelksProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Špehování vesnice {0} - {1} - bylo úspěšné!\n", nepratelksProvincie.JmenoProvincie, vlastnikSpehovaneVesncie);
                    Hra.Player.ZobrazVybranouZpravu(Hra.Player.ZpravyNinju.Last());
                    Console.ResetColor();
                    Console.WriteLine("\nENTER");
                    Console.ReadLine();
                }

                break;
            }

            case false:     //Zemřel
            {
                if (Hra.AktualniHrac == Hra.Player)
                {
                    Hra.ZobrazPrehled(Hra.Player, true);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("             ŠPEHOVÁNÍ PROVINCIE {0}\n", nepratelksProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Špehování vesnice {0} - {1} - selhalo - náš ninja byl odhalen!", nepratelksProvincie.JmenoProvincie, vlastnikSpehovaneVesncie);
                    Console.ResetColor();
                    Console.WriteLine("\nENTER");
                    Console.ReadLine();
                }
                if (nepratelksProvincie.Vlastnik == Hra.Player)
                {
                    Hra.ZobrazPrehled(Hra.Player, true);

                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("             DOPADENÍ NINJY V PROVINCII {0}\n", nepratelksProvincie.JmenoProvincie.ToUpper());
                    Console.WriteLine("Dopadli jsme nepřátelského ninju z vesnice: {0} - {1}", VlastnenaProvincie.JmenoProvincie, VlastnenaProvincie.Vlastnik);
                    Console.ResetColor();
                    Console.WriteLine("\nENTER");
                    Console.ReadLine();
                }
                //Zemřel
                Pocet--;

                if (vlastnikSpehovaneVesncie is Pocitac)
                {
                    ((Pocitac)vlastnikSpehovaneVesncie).ZvysPriorituProvincie(VlastnenaProvincie, 1);
                    ((Pocitac)vlastnikSpehovaneVesncie).ZvzsPriorituVladce(VlastnenaProvincie.Vlastnik, 2);
                }

                if (Hra.AktualniHrac is Pocitac)
                {
                    ((Pocitac)Hra.AktualniHrac).ZvysPriorituProvincie(nepratelksProvincie, 1);
                }
                break;
            }
            }
        }
コード例 #30
0
        public virtual void VyberJednotkyProPodporu(Provincie cilovaProvincie)
        {
            Hra.AktualniBudova.ZobrazInformace();
            string inforamce = string.Format("Poslat jednotky do {0}", cilovaProvincie.JmenoProvincie);

            List <Jednotka> armada = VyberJednotky(inforamce);

            if (armada != null)
            {
                if (armada.Count != 0)
                {
                    Console.WriteLine("\n\n1 -> Poslat podporu");
                    Console.WriteLine("2 -> Zpět");

                    int volba = Hra.VyberZnabidky(2);

                    switch (volba)
                    {
                    case 1:
                    {
                        Hra.AktualniProvincie.PridejJednotkyProPodporu(armada.ToArray());
                        Hra.AktualniProvincie.PridejProvincieProPodporu(cilovaProvincie);
                        Hra.AktualniBudova.ZobrazInformace();

                        Console.WriteLine("Armáda byla vyslána do provincie {0}", cilovaProvincie.JmenoProvincie);
                        Hra.VypisArmadu(armada);

                        Console.WriteLine("\n\n1 -> Zpět");
                        volba = Hra.VyberZnabidky(1);

                        ((Hrad)Hra.AktualniBudova).PoslatPodporu();

                        break;
                    }

                    case 2:
                    {
                        //Vrácení jednotek
                        Hra.AktualniProvincie.PrijmiJednotky(armada.ToArray());
                        ((Hrad)Hra.AktualniBudova).PoslatPodporu();
                        break;
                    }
                    }
                }
                else
                {
                    Hra.AktualniBudova.ZobrazInformace();
                    Console.WriteLine("Nebyly vybrány žádné jednotky");
                    Console.WriteLine("\n1 -> Zpět");

                    int volba = Hra.VyberZnabidky(1);
                    ((Hrad)Hra.AktualniBudova).Nahled();
                }
            }
            else
            {
                Console.WriteLine("\nV provincii se nenacházejí žádné jednotky\n");
                Console.WriteLine("1 - > Zpět");
                int volba = Hra.VyberZnabidky(1);
                ((Hrad)Hra.AktualniBudova).Nahled();
            }
        }