コード例 #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 Jednotka(Jednotka jednotka)
 {
     Jmeno         = jednotka.Jmeno;
     Utok          = jednotka.Utok;
     Obrana        = jednotka.Obrana;
     PuvodniObrana = jednotka.Obrana;
     CenaDrevo     = jednotka.CenaDrevo;
     CenaZlato     = jednotka.CenaZlato;
     Pocet         = jednotka.Pocet;
 }
コード例 #3
0
        protected virtual List <Jednotka> VyberJednotky(string inforamce)
        {
            Console.WriteLine(inforamce);

            List <Jednotka> pluky        = new List <Jednotka>();
            List <Jednotka> puvodniPluky = new List <Jednotka>();

            /*Ověření zda se v provincii nacházejí jednotky*/
            foreach (Jednotka j in Hra.AktualniProvincie.Jednotky)
            {
                if (j.Pocet != 0)
                {
                    pluky.Add(new Jednotka(j)); // viz Reference, v konstrukotru se předává i počet - viz souboje
                    puvodniPluky.Add(j);
                }
            }

            if (pluky.Count != 0)
            {
                List <Jednotka> armada = new List <Jednotka>();

                for (int i = 0; i < pluky.Count; i++)
                {
                    Console.WriteLine("\n\nVybrat jednotky:");

                    Jednotka pluk = pluky[i];

                    string s = string.Format("{0} [{1}]: ", pluk.Jmeno, pluk.Pocet);
                    int    jednoktyDoPryc = Hra.CtiCislo(s, pluk.Pocet);

                    if (jednoktyDoPryc != 0)
                    {
                        pluk.NastavPocet(jednoktyDoPryc);
                        puvodniPluky[i].NastavPocet(puvodniPluky[i].Pocet - jednoktyDoPryc);
                        armada.Add(pluk);
                    }

                    ///Informace
                    Hra.AktualniBudova.ZobrazInformace();
                    Console.WriteLine(inforamce);
                    if (armada.Count != 0)
                    {
                        Hra.VypisArmadu(armada);
                    }
                }

                return(armada);
            }
            else
            {
                return(null);
            }
        }
コード例 #4
0
        protected virtual void OdemkniJednotku(Jednotka jednotkaProOdemknuti)
        {
            if (!(jednotkaProOdemknuti is Ninja))
            {
                Jednotky.Add(new Jednotka(jednotkaProOdemknuti));
            }
            else
            {
                Jednotky.Add(new Ninja(jednotkaProOdemknuti));
            }

            if (Hra.AktualniHrac == Hra.Player)
            {
                Console.WriteLine("Byla odemknuta nová jednotka: {0}", jednotkaProOdemknuti.Jmeno);
            }
        }
コード例 #5
0
        public Staje()
        {
            Jmeno    = "Stáje";
            MaxLevel = 2;

            Jednotky = new List <Jednotka>();
            Jednotky.Add(new Jednotka(Jednotka.jezdec));

            JednotkyProReferenci = new Jednotka[2] {
                Jednotka.jezdec, Jednotka.lucistnikNaKoni
            };

            cenaDrevo = 200;
            cenaZlato = 120;

            Informace.Add(string.Format("Level 2: {0}", Jednotka.lucistnikNaKoni.Jmeno));
        }
コード例 #6
0
        public void ZautocNaNepritele(Jednotka nepritel)
        {
            //int bonusZPoctu = Convert.ToInt32(Math.Round((double)Pocet / 7));

            /*int nahoda = r.Next(1, 4);
             *
             * int poskozeni = (Utok + nahoda); //+ bonus
             * poskozeni = Convert.ToInt32(Math.Round(((double)poskozeni / 100) * ((double)nepritel.Obrana / 2)));*/

            int bonusZUtoku  = Convert.ToInt32(Math.Round((double)Pocet / 100));
            int bonusZobrany = Convert.ToInt32(Math.Round((double)nepritel.Pocet / 100));

            int nahoda;

            int utok            = Utok / 5;
            int obranaNepritele = Convert.ToInt32(Math.Round((double)nepritel.Obrana / 2));

            double poskozeni = 0;

            if (obranaNepritele + bonusZobrany >= utok + bonusZUtoku)
            {
                poskozeni = r.Next(0, 2);
            }
            else
            {
                nahoda = utok - obranaNepritele;
                if (nahoda < 0)
                {
                    nahoda = 1;
                }

                poskozeni = r.Next(1, nahoda + 1);
            }


            if (poskozeni > nepritel.Pocet)
            {
                poskozeni = nepritel.Pocet;
            }

            if (poskozeni > 0)
            {
                nepritel.PridejPocet(-Convert.ToInt32(poskozeni));
            }
        }
コード例 #7
0
        public Dojo()
        {
            Jmeno    = "Dódžo";
            MaxLevel = 5;

            Jednotky = new List <Jednotka>();
            Jednotky.Add(new Jednotka(Jednotka.kopijnik));

            JednotkyProReferenci = new Jednotka[3] {
                Jednotka.kopijnik, Jednotka.lucistnik, Jednotka.ninja
            };

            cenaDrevo = 150;
            cenaZlato = 90;

            Informace.Add(string.Format("Level 2: {0}", Jednotka.lucistnik.Jmeno));
            Informace.Add(string.Format("Level 3: {0}", Jednotka.ninja.Jmeno));
        }
コード例 #8
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        /*//////////////  KONSTRUKTOR  /////////////*/

        public Provincie(string jmenoProvincie)
        {
            JmenoProvincie = jmenoProvincie;

            Drevo = 4000;
            Zlato = 5000;
            Ryze  = 2000;

            MaxDreva = 50000;
            MaxZlata = 50000;
            MaxRyze  = 50000;

            Jednotky    = new Jednotka[6];
            Jednotky[0] = new Jednotka(Jednotka.kopijnik);
            Jednotky[1] = new Jednotka(Jednotka.lucistnik);
            Jednotky[2] = new Jednotka(Jednotka.jezdec);
            Jednotky[3] = new Jednotka(Jednotka.lucistnikNaKoni);
            Jednotky[4] = new Jednotka(Jednotka.strelec);
            Jednotky[5] = new Jednotka(Jednotka.samuraj);

            Budovy = new List <Budova>();
            Budovy.Add(new Hrad());
            Budovy.Add(new Pole());
            Budovy.Add(new Pila());
            Budovy.Add(new Trziste());
            Budovy.Add(new Domy());
            Budovy.Add(new Dojo());

            JednotkyDoUtoku  = new List <Jednotka[]>();
            ProvincieProUtok = new List <Provincie>();

            JednotkyProPodporu  = new List <Jednotka[]>();
            ProvincieProPodporu = new List <Provincie>();

            Ninjove = new Ninja(Jednotka.ninja);
            NinjoveMimoProvincii             = new Ninja(Jednotka.ninja);
            NepratelskeProvincieProSpehovani = new List <Provincie>();

            ProvincieProDovozSurovin = new List <Provincie>();
            SurovinyProDovoz         = new List <int[]>();
        }
コード例 #9
0
        public Hrad()
        {
            Jmeno                = "Hrad";
            Level                = 1;
            MaxLevel             = 10;
            Jednotky             = new List <Jednotka>();
            JednotkyProReferenci = new Jednotka[2] {
                Jednotka.strelec, Jednotka.samuraj
            };

            cenaDrevo = 280;
            cenaZlato = 380;

            try
            {
                Informace.Add(string.Format("Level 3: {0}", Hradby.Jmeno));
                Informace.Add(string.Format("Level 5: {0}", Staje.Jmeno));
                Informace.Add(string.Format("Level 7: {0}", Jednotka.strelec.Jmeno));
                Informace.Add(string.Format("Level 8: {0}", Jednotka.samuraj.Jmeno));
            }
            catch { }
        }
コード例 #10
0
        protected override List <Jednotka> VyberJednotky(string informace)
        {
            List <Jednotka> pluky        = new List <Jednotka>();
            List <Jednotka> puvodniPluky = new List <Jednotka>();

            /*Ověření zda se v provincii nacházejí jednotky*/
            foreach (Jednotka j in Hra.AktualniProvincie.Jednotky)
            {
                if (j.Pocet != 0)
                {
                    pluky.Add(new Jednotka(j)); // viz Reference
                    puvodniPluky.Add(j);
                }
            }

            if (pluky.Count != 0)
            {
                List <Jednotka> armada = new List <Jednotka>();

                for (int i = 0; i < pluky.Count; i++)
                {
                    Jednotka pluk = pluky[i];

                    int jednotkyDoPryc = Convert.ToInt32(Math.Round(((double)pluk.Pocet / 100) * 90));

                    pluk.NastavPocet(jednotkyDoPryc);
                    puvodniPluky[i].NastavPocet(puvodniPluky[i].Pocet - jednotkyDoPryc);
                    armada.Add(pluk);
                }

                return(armada);
            }
            else
            {
                return(null);
            }
        }
コード例 #11
0
        private List <Jednotka> VvyhodnotUtok(List <Jednotka> utocnici, List <Jednotka> cilovaArmada)
        {
            //Náhodne zamíchá pluky v armmáde soupeře

            List <Jednotka> nezamichaniSouperi = new List <Jednotka>(); //Reference, refrence a zase ty reference

            foreach (Jednotka j in cilovaArmada)
            {
                nezamichaniSouperi.Add(new Jednotka(j));
            }

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

            foreach (Jednotka j in nezamichaniSouperi)
            {
                if (j.Pocet != 0)
                {
                    listProZamichani.Add(j);
                }
            }

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

            //Zamíchání
            for (int i = 0; i < listProZamichani.Count; i++) //změnit podmínku - listProZamichani.Count != 0
            {
                int nahodnyIndex = Hra.NahodnyGenerator.Next(0, listProZamichani.Count);

                zamichaniSouperi.Add(listProZamichani[nahodnyIndex]);
                listProZamichani.RemoveAt(nahodnyIndex);
            }


            //Souboj:
            List <Jednotka> braniciArmada = new List <Jednotka>();

            foreach (Jednotka j in zamichaniSouperi)
            {
                braniciArmada.Add(j);
            }

            for (int i = 0; i < utocnici.Count; i++)
            {
                if (i < braniciArmada.Count - 1)
                {
                    utocnici[i].ZautocNaNepritele(braniciArmada[i]);
                }
                else
                {
                    braniciArmada = new List <Jednotka>();
                    foreach (Jednotka j in zamichaniSouperi)
                    {
                        braniciArmada.Add(j);
                    }

                    if (braniciArmada.Count != 0)
                    {
                        int index = Hra.NahodnyGenerator.Next(0, braniciArmada.Count);

                        Jednotka braniciPluk = braniciArmada[index];

                        utocnici[i].ZautocNaNepritele(braniciPluk);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            return(nezamichaniSouperi);
        }
コード例 #12
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);
                }
            }
        }
コード例 #13
0
 public Ninja(Jednotka ninja) : base(ninja)
 {
     Pocet = 0;
 }
コード例 #14
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);
                }
            }
        }