Exemplo n.º 1
0
 //spravuje vyhru
 private static void SpravaVyhry(List <Mravec> mravce, Suradnice suradnice, TypySubojov typySubojov, int cas)
 {
     if (typySubojov == TypySubojov.subojPriPrechode)
     {
         foreach (Mravec mravec in mravce)
         {
             mravec.NastavVyhralPriPrechode(true);
             mravec.ZvysEnergia();
             nahradneMraveniskoPohybujuce[suradnice.ZistiXSuradnicu(),
                                          suradnice.ZistiYSuradnicu()].Add(mravec);
             HlaskyCinnostiMravcovStavObjektov.MravecBojovalV(cas,
                                                              mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1, suradnice.ZistiXSuradnicu(), suradnice.ZistiYSuradnicu(),
                                                              mravec.ZistiEnergiaMravca());
         }
     }
     else
     {
         nahradneMraveniskoStojace[suradnice.ZistiXSuradnicu(),
                                   suradnice.ZistiYSuradnicu()] = new List <Mravec>();
         foreach (Mravec mravec in mravce)
         {
             mravec.NastavVyhralNaPolicku(true);
             mravec.ZvysEnergia(); nahradneMraveniskoStojace[suradnice.ZistiXSuradnicu(),
                                                             suradnice.ZistiYSuradnicu()].Add(mravec);
             HlaskyCinnostiMravcovStavObjektov.MravecBojovalV(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                              suradnice.ZistiXSuradnicu(),
                                                              suradnice.ZistiYSuradnicu(), mravec.ZistiEnergiaMravca());
         }
     }
 }
Exemplo n.º 2
0
        public void PridanieMravcaKonkretnaPozicia(TypyMravcov typyMravcov, int xSuradnica, int ySuradnica, int energia, int cas)
        {
            Mravec mravec;

            mravec = new Mravec(xSuradnica, ySuradnica, true, true, typyMravcov, cisloNasledujucehoMravca, energia);
            mraveniskoMravce[xSuradnica, ySuradnica].Add(mravec);
            //
            cisloNasledujucehoMravca++;

            pocet++;

            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1: ZvysPocetMravcovTypu1(); break;

            case TypyMravcov.MravecTypu2: ZvysPocetMravcovTypu2(); break;

            case TypyMravcov.MravecTypu3: ZvysPocetMravcovTypu3(); break;

            case TypyMravcov.MravecTypu4: ZvysPocetMravcovTypu4(); break;
            }
            HlaskyCinnostiMravcovStavObjektov.MravecVznikolNaPolickuSoZaciatocnouEnergiou(cas, mravec.ZistiIdMravca(),
                                                                                          (int)mravec.ZistiTypyMravcov() + 1,
                                                                                          mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu(),
                                                                                          energia);
            Console.WriteLine(pocet);
        }
Exemplo n.º 3
0
        //spravuje parenie mravcov, na to aby vznikli nove mravce musia byt splnene urcite podmienky
        public static void ParenieMravcovDanaSuradnica(Mravenisko mravenisko, Suradnice suradnica, int cas)
        {
            List <Mravec> pariaceSaMravce = new List <Mravec>();
            int           xSuradnica      = suradnica.ZistiXSuradnicu();
            int           ySuradnica      = suradnica.ZistiYSuradnicu();

            foreach (PohybujuceSaObjekty pohybObjekt in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(suradnica))
            {
                Mravec mravec = pohybObjekt as Mravec;

                if (mravec.ZistiParitSa())
                {
                    HlaskyCinnostiMravcovStavObjektov.MravecSaRozhodolParit(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                            suradnica.ZistiXSuradnicu(), suradnica.ZistiYSuradnicu());
                    if (mravec.ZistiEnergiaMravca() > 3)
                    {
                        pariaceSaMravce.Add(mravec);
                    }
                }
            }
            int energiaPreMravcov = 0;
            int energia           = 0;

            int pocetMravcovNovych = pariaceSaMravce.Count / 2;

            if (pocetMravcovNovych > 0)
            {
                mravenisko.NastavParenie(xSuradnica, ySuradnica, true);

                foreach (Mravec mravec in pariaceSaMravce)
                {
                    energia            = mravec.ZistiEnergiaMravca() / 3;
                    energiaPreMravcov += energia;
                    mravec.ZnizEnergia(energia);
                    HlaskyCinnostiMravcovStavObjektov.MravecSaPari(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                   suradnica.ZistiXSuradnicu(), suradnica.ZistiYSuradnicu());
                    HlaskyCinnostiMravcovStavObjektov.ZnizenaEnergiaMravcaParenie(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                                  mravec.ZistiXSuradnicu(),
                                                                                  mravec.ZistiYSuradnicu(), mravec.ZistiEnergiaMravca());
                    mravec.NastavPodariloSa(true);
                }

                energia = energiaPreMravcov / pocetMravcovNovych;

                TypyMravcov typyMravcov = default(TypyMravcov);
                typyMravcov = pariaceSaMravce[0].ZistiTypyMravcov();

                for (int i = 0; i < pocetMravcovNovych - 1; i++)
                {
                    mravenisko.PridanieMravcaKonkretnaPozicia(typyMravcov, xSuradnica, ySuradnica, energia, cas);
                    energiaPreMravcov -= energia;
                }

                mravenisko.PridanieMravcaKonkretnaPozicia(typyMravcov, xSuradnica, ySuradnica, energiaPreMravcov, cas);
            }
        }
Exemplo n.º 4
0
        //mravec ide dopredu, jeho uskok je nast. true, pretoze pri boji pri prechadzani policok
        //utecie na policko z ktoreho chcel odist, znizi sa jeho energia
        public void ChodDopreduObrana(Mravenisko mravenisko, int cas)
        {
            NastavUskok(true);
            ChodDopredu(mravenisko.ZistiRozmerMraveniska());
            mravenisko.PosunMravca(new Suradnice(ZistiXSuradnicuPredchadzajuceSuradnice(), ZistiYSuradnicuPredchadzajuceSuradnice()), this);

            SpravaMraveniskaMravcov.nahradneMraveniskoPohybujuce[ZistiXSuradnicu(), ZistiYSuradnicu()].Add(this);
            HlaskyCinnostiMravcovStavObjektov.MravecIdeDopreduObranne(cas, ZistiIdMravca(), (int)ZistiTypyMravcov() + 1,
                                                                      ZistiXSuradnicu(), ZistiYSuradnicu());
            HlaskyCinnostiMravcovStavObjektov.MravecPrisielNaPolicko(cas, ZistiIdMravca(), (int)ZistiTypyMravcov() + 1,
                                                                     ZistiXSuradnicu(), ZistiYSuradnicu());
        }
Exemplo n.º 5
0
        //spracuje mravce, ktore zanikli pri suboji
        private static void VymazMravce(Mravenisko mravenisko, Suradnice suradnice, List <Mravec> mravce, int cas)
        {
            foreach (Mravec mravec in mravce)
            {
                mravec.ZnizEnergia(Konstanty.maximumEnergiaMravec * 7);
                mravenisko.OdstranenieMravca(suradnice, mravec.ZistiIdMravca());
                HlaskyCinnostiMravcovStavObjektov.MravecZanikolNaPolickuPriBoji(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                                mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu());

                mravec.NastavPodariloSa(false);
            }
        }
Exemplo n.º 6
0
        private void GenerovanieSkaly(int pocetSkaly)
        {
            List <int[]> volnePozicie = VyberPozicii(pocetSkaly, NajdenieVhodnychPozicii(TypyObjektov.prazdnaZem));

            foreach (int[] pozicia in volnePozicie)
            {
                Skala skala = new Skala(pozicia[0], pozicia[1], true, true);
                mraveniskoTypyPolicok[pozicia[0], pozicia[1]] = skala;
                HlaskyCinnostiMravcovStavObjektov.SkalaVznikla(casExistencieMraveniska, skala.ZistiXSuradnicu(),
                                                               skala.ZistiYSuradnicu());
            }
        }
Exemplo n.º 7
0
        private void PridaniePotravy()
        {
            List <int[]> volnePozicie = VyberPozicii(1, NajdenieVhodnychPozicii(TypyObjektov.prazdnaZem));

            foreach (int[] pozicia in volnePozicie)
            {
                ZnizenieDanehoPoctuNepohybujuceSaObjekty(pozicia);
                Potrava potrava = new Potrava(pozicia[0], pozicia[1], true, true);
                mraveniskoTypyPolicok[pozicia[0], pozicia[1]] = potrava;
                HlaskyCinnostiMravcovStavObjektov.PotravaVzniklaNaPolicku(casExistencieMraveniska, potrava.ZistiXSuradnicu(),
                                                                          potrava.ZistiYSuradnicu(), potrava.ZistiMnozstvoEnergia());
                ZvysPocetPotravy();
            }
        }
Exemplo n.º 8
0
 //da mravce na miesto na ktore uskocili pri prechode
 private static void VratMravceNaPolickoZKtorehoIsliUskociliNanTeraz(Suradnice suradnice,
                                                                     List <Mravec> mravce, Mravenisko mravenisko, int cas)
 {
     foreach (Mravec mravec in mravce)
     {
         mravec.OtocitVlavo();
         mravec.OtocitVlavo();
         mravec.ChodDopredu(mravenisko.ZistiRozmerMraveniska());
         mravec.OtocitVlavo();
         mravec.OtocitVlavo();
         HlaskyCinnostiMravcovStavObjektov.MravecPrisielNaPolicko(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                  mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu());
         mravenisko.PosunMravca(mravec.ZistiStareSuradnica(), mravec);
         nahradneMraveniskoStojace[suradnice.ZistiXSuradnicu(), suradnice.ZistiYSuradnicu()].Add(mravec);
     }
 }
Exemplo n.º 9
0
        //znizi energiu mravcov na konci jedneho "casu" behu simulacie
        public static void ZnizenieEnergiaNaKonci(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            List <Mravec> mravceNaOdstranenie = new List <Mravec>();

            for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
                {
                    foreach (PohybujuceSaObjekty objekt in mravenisko.
                             VratObjektPohybujuceSaNaDanychSuradniciach(new Suradnice(i, j)))
                    {
                        Mravec mravec = objekt as Mravec;
                        mravec.ZnizEnergia(Konstanty.maximumEnergiaMravec / 20);
                        HlaskyCinnostiMravcovStavObjektov.ZnizenaEnergiaMravcaNaKonciDanehoCasu(cas, mravec.ZistiIdMravca(),
                                                                                                (int)mravec.ZistiTypyMravcov() + 1,
                                                                                                mravec.ZistiXSuradnicu(),
                                                                                                mravec.ZistiYSuradnicu(),
                                                                                                mravec.ZistiEnergiaMravca());
                        if (!mravec.ZistiExistenciu())
                        {
                            mravceNaOdstranenie.Add(mravec);
                        }
                    }
                }
            }

            foreach (Mravec mravec in mravceNaOdstranenie)
            {
                mravenisko.NastavUbytokMravcovPoZnizeniEnergie(mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu(), true);
                mravenisko.ZvysPocetMravcovOdisliZnizenimEnergie(mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu());

                mravenisko.OdstranenieMravca(mravec.ZistiSuradnica(), mravec.ZistiIdMravca());

                HlaskyCinnostiMravcovStavObjektov.MravecZanikolNaPolickuNedostatokEnergie(cas, mravec.ZistiIdMravca(),
                                                                                          (int)mravec.ZistiTypyMravcov() + 1,
                                                                                          mravec.ZistiXSuradnicu(),
                                                                                          mravec.ZistiYSuradnicu());
            }

            Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.znizenieEnergiaNaKonci,
                                          TypyUdalosti.znizenieEnergiaNaKonci);

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Exemplo n.º 10
0
        //znizenie poctu daneho typu nepohybujucich objektov
        private void ZnizenieDanehoPoctuNepohybujuceSaObjekty(int[] pozicia)
        {
            if ((mraveniskoTypyPolicok[pozicia[0], pozicia[1]]) != null)
            {
                switch (mraveniskoTypyPolicok[pozicia[0], pozicia[1]].ZistiTypObjektu())
                {
                case TypyObjektov.prazdnaZem: ZnizPocetPrazdnaZem(); break;

                case TypyObjektov.potrava:
                {
                    ZnizPocetPotravy();
                    Potrava potrava = mraveniskoTypyPolicok[pozicia[0], pozicia[1]] as Potrava;
                    HlaskyCinnostiMravcovStavObjektov.PotravaZanikla(casExistencieMraveniska,
                                                                     potrava.ZistiXSuradnicu(),
                                                                     potrava.ZistiYSuradnicu());
                }
                break;
                }
            }
        }
Exemplo n.º 11
0
        //mravec sa naje, pokial je na danom policku potrava
        public void NajedzSa(Mravenisko mravenisko, int cas)
        {
            TypyObjektov typyObjektov = mravenisko.ZistiCoJeNaDanychSuradniciach(suradnice);

            if (typyObjektov == TypyObjektov.potrava && ZistiExistenciu())
            {
                Potrava potrava = mravenisko.VratObjektNepohybujuceSaNaDanychSuradniciach(suradnice) as Potrava;
                NajedzSa(potrava.ZiadamEnergia(ZistiEnergiaMravca()));
                NastavPodariloSa(true);

                if (potrava.ZistiExistenciu() == false)
                {
                    mravenisko.PridaniePrazdnaZemKonkretnaPozicia(potrava.ZistiXSuradnicu(), potrava.ZistiYSuradnicu());
                }

                HlaskyCinnostiMravcovStavObjektov.MravecJe(cas, ZistiIdMravca(), (int)ZistiTypyMravcov() + 1,
                                                           ZistiXSuradnicu(), ZistiYSuradnicu(),
                                                           ZistiEnergiaMravca());
                mravenisko.NastavJedenie(ZistiXSuradnicu(), ZistiYSuradnicu(), true);
            }
        }
Exemplo n.º 12
0
        //spravuje mravce, ktore uskakuju z boja
        private static void ZistiSpravujUskakujuceMravce(Mravenisko mravenisko,
                                                         ref List <Mravec> mravce, List <Mravec> mravceUskakujuce, int cas)
        {
            List <Mravec> mravceNeuskakujuce = new List <Mravec>();

            foreach (Mravec mravec in mravce)
            {
                if (mravec.ZistiUskok())
                {
                    mravec.ZnizEnergia(Konstanty.maximumEnergiaMravec / 20);
                    HlaskyCinnostiMravcovStavObjektov.ZnizenaEnergiaMravcaUskok(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                                mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu(),
                                                                                mravec.ZistiEnergiaMravca());
                    mravec.NastavUskocil(true);
                    mravec.NastavPodariloSa(false);

                    if (mravec.ZistiExistenciu())
                    {
                        mravceUskakujuce.Add(mravec);
                    }
                    else
                    {
                        HlaskyCinnostiMravcovStavObjektov.MravecZanikolNaPolickuNedostatokEnergie(cas, mravec.ZistiIdMravca(),
                                                                                                  (int)mravec.ZistiTypyMravcov() + 1,
                                                                                                  mravec.ZistiXSuradnicu(),
                                                                                                  mravec.ZistiYSuradnicu());
                        mravenisko.OdstranenieMravca(new Suradnice(mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu()), mravec.ZistiIdMravca());
                    }
                }
                else
                {
                    mravceNeuskakujuce.Add(mravec);
                }
            }


            mravce = mravceNeuskakujuce;
        }
Exemplo n.º 13
0
 //mravec sa otoci vlavo
 public void OtocSaVlavo(Mravenisko mravenisko, int cas)
 {
     OtocitVlavo();
     HlaskyCinnostiMravcovStavObjektov.MravecSaOtocilDolava(cas, ZistiIdMravca(), (int)ZistiTypyMravcov() + 1,
                                                            ZistiXSuradnicu(), ZistiYSuradnicu());
 }
Exemplo n.º 14
0
 //mravec zostane stat, tym sa zvysi jeho obrana, pre pripadny boj na jeho policku
 public void ZostanStat(Mravenisko mravenisko, int cas)
 {
     NastavObrana(true);
     HlaskyCinnostiMravcovStavObjektov.MravecZostalStat(cas, ZistiIdMravca(), (int)ZistiTypyMravcov() + 1,
                                                        ZistiXSuradnicu(), ZistiYSuradnicu());
 }