Esempio n. 1
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());
        }
Esempio n. 2
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;
        }