Exemple #1
0
 //naplnenie nahradneMraveniskoStojace mravcami na danych polickach, ktory nemenia policko
 public static void NajdiStojacichMravcov(Mravenisko mravenisko)
 {
     for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
     {
         for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
         {
             foreach (Mravec mravec in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(new Suradnice(i, j)))
             {
                 if (mravec.ZistiCinnostMravca() != CinnostiMravcov.chodDopreduObrana && mravec.ZistiCinnostMravca() != CinnostiMravcov.chodDopreduUtok)
                 {
                     nahradneMraveniskoStojace[i, j].Add(mravec);
                 }
             }
         }
     }
 }
Exemple #2
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());
        }
Exemple #3
0
        //resetuje hodnoty pred nasledujucim krokom, resp. "casom", simulacie, takisto sposobi delay medzi dalsim krokom simulacie
        public static void PrecistenieNastavenychHodnot(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            NastaveneHodnotyPocasKrokov.NastavParenie(false);
            SpravaMraveniskaMravcov.InicializaciaMraveniska(mravenisko);

            for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
                {
                    foreach (Mravec mravec in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(new Suradnice(i, j)))
                    {
                        mravec.NastavUskok(false);
                    }
                }
            }

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Exemple #4
0
        //nastavy nove cinnosti mravcov na zaklade ich pozicie a strategie
        public static void NastavenieNovychCinnostiMravcov(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.nastavenieNasledujucichCinnostiMravcov,
                                          TypyUdalosti.nastavenieNasledujucichCinnostiMravcov);

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());

            for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
                {
                    foreach (PohybujuceSaObjekty pohybObjekt in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(new Suradnice(i, j)))
                    {
                        Mravec mravec = pohybObjekt as Mravec;
                        NastavenieCinnostiMravcov.NastavenieCinnostiMravca(halda, cas, mravec, mravenisko);
                    }
                }
            }

            SpravaMraveniskaMravcov.InicializaciaMraveniska(mravenisko);
            SpravaMraveniskaMravcov.NajdiStojacichMravcov(mravenisko);
        }