public override void Hraj()
        {
            Hra.NastavAktualnihoHrace(this);

            foreach (Provincie p in SeznamProvincii)
            {
                Hra.NastavAktualniProvincii(p);

                //každý 10. den vynuluje priority (zabránění patové situace)
                if (Hra.Den % 10 == 0)
                {
                    NastavPocatecniPriority();
                }

                int maxLevely = 0;
                foreach (Budova b in p.Budovy)
                {
                    if (b.Level == b.MaxLevel && !(b is Domy))
                    {
                        maxLevely++;
                    }
                }

                int vyberTypuHry;

                if (maxLevely == p.Budovy.Count - 1)
                {
                    vyberTypuHry = 0;
                }
                else
                {
                    vyberTypuHry = Hra.NahodnyGenerator.Next(0, 2);
                }

                //0 = Útočné kolo
                //1 = Ekonomické kolo

                Obchoduj();

                if (vyberTypuHry == 0)
                {
                    zvoleneUtocneKolo = true;
                    ZagrajUtocneKolco();
                    ZagrajEkonomickeKolco();
                }
                else
                {
                    zvoleneUtocneKolo = false;
                    ZagrajEkonomickeKolco();
                    ZagrajUtocneKolco();
                }
            }
        }
Beispiel #2
0
        public virtual void Obchoduj()
        {
            foreach (Provincie p in SeznamProvincii)
            {
                Hra.NastavAktualniProvincii(p);
                Budova trziste = p.Budovy[3];

                if (trziste.Level > 0 && ((Trziste)trziste).AutomatickeProdaniRyze == true)
                {
                    ((Trziste)trziste).Prodej("ryze", p.Ryze);
                }
            }
        }
Beispiel #3
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();
            }
        }