Example #1
0
        //zisti ci chce uzivatel pokracovat v simulacii, len konzolova verzia
        public static bool OtazkaNaUkoncenieMraveniska(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Reader nacitavac = Reader.Console();

            HlaskyPriNacitavaniHodnotRozhodnuti.ChcetePokracovatVSimulacii();
            string odpoved;

            odpoved = nacitavac.Word();

            Udalost udalost = new Udalost(cas + 10, (int)TypyUdalosti.otazkaNaKoniec,
                                          TypyUdalosti.otazkaNaKoniec);

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



            if (odpoved == "ANO")
            {
                return(true);
            }
            else
            {
                if (Konstanty.jeNastaveneMiestoUlozenia)
                {
                    Konstanty.zapisovacUdajov.Close();
                }

                Environment.Exit(-1);
                return(false);
            }
        }
Example #2
0
        //udalost pre vypisanie smeru pohybu mravca, tj. smeru otocenia mravca pokial ide dopredu
        public static void GrafickyVypisMraveniskaSmerAktivnehoPohybuStatie(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.grafickyVypisSmerAktivnehoPohybuStatie, TypyUdalosti.grafickyVypisSmerAktivnehoPohybuStatie);

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

            mravenisko.NastavFazaMraveniska(FazaMraveniska.poNastaveniSmerAktivnehoPohybuStatie);
        }
Example #3
0
        //udalost pre vypisovanie mraveniska po pareni, len GUI
        public static void GrafickyVypisMraveniskaPoPareni(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.grafickyVypisMraveniskaParenie, TypyUdalosti.grafickyVypisMraveniskaParenie);

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

            mravenisko.NastavFazaMraveniska(FazaMraveniska.poPareni);
        }
Example #4
0
        //upravy, aktualizuje policka na mravenisku
        public static void UpravaNepohybujucichSaPolicok(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            mravenisko.NajdeniePotravyZjedena();

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Example #5
0
        //zvysi cas mraveniska
        public static void ZvysenieCasuMraveniska(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            mravenisko.ZvysCasExistencieMraveniska();

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Example #6
0
        //navysi vek vsetkych mravcov
        public static void NavysenieVekuMravcov(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            mravenisko.NavysVekMravcov();

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Example #7
0
        //udalost pre vypisovanie mraveniska po vykonani cinnosti nepohybovych (teraz len po najedeni)
        public static void GrafickyVypisMraveniskaPoVykonaniCinnostiNepohybovych(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.grafickyvVypisPoVykonaniCinnostiNepohybovych,
                                          TypyUdalosti.grafickyvVypisPoVykonaniCinnostiNepohybovych);

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

            mravenisko.NastavFazaMraveniska(FazaMraveniska.poVykonaniCinnostiNepohybovych);
        }
Example #8
0
        //vykana cinnosti mravcov, ktore az tak nesuvisia s pohybom a ide o samostatnu cinnost konkretneho mravca
        public static void VykonanieCinnnostiMravcovNepohyb(Udalost udalost, Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Mravec mravec = udalost.ZistiObjektMravec();

            switch (udalost.ZistiCinnostMravca())
            {
            case CinnostiMravcov.najedzSa:
                mravec.NajedzSa(
                    mravenisko, cas); break;
            }
        }
Example #9
0
        //len konzolova verzia
        public static void VypisStatistickychUdajov(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            HlaskyInformacnePocasSimulacie.VypisCasu(mravenisko.ZistiCasMraveniska());
            HlaskyInformacnePocasSimulacie.VypisPoctuMravcov(mravenisko.ZistiPocetMravcovTypu1(),
                                                             mravenisko.ZistiPocetMravcovTypu2(),
                                                             mravenisko.ZistiPocetMravcovTypu3(),
                                                             mravenisko.ZistiPocetMravcovTypu4());
            HlaskyInformacnePocasSimulacie.VypisPoctuPotravy(mravenisko.ZistiPocetPotravy());

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Example #10
0
        // spracuje boj mravcov inych typov na vsetkych polickach
        public static void BojMravcovNaPolickach(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
                {
                    SpravaMraveniskaMravcov.SubojNepohybujuce(mravenisko, new Suradnice(i, j), cas);
                }
            }

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Example #11
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());
        }
Example #12
0
        //spracuje boj mravcov ktory sa stretli pri prechadzani medzi polickami,
        //ak mravce b idu na policko B z policka C a mravce c idu na policko C z policka B
        //tak ich suboj je spracovany v tejto funkcii
        public static void BojMravcovPrechadzajucich(Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
                {
                    SpravaMraveniskaMravcov.ZistiPohybSZahajSuboj(mravenisko, new Suradnice(i, j), cas);

                    SpravaMraveniskaMravcov.ZistiPohybVZahajSuboj(mravenisko, new Suradnice(i, j), cas);
                }
            }

            SpravaMraveniskaMravcov.ZlucenieNahradnychMravenisk(mravenisko.ZistiRozmerMraveniska());

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

            halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
        }
Example #13
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());
        }
Example #14
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);
        }
        //nastavi cinnosti mravca, v zavislosti od toho vytvori Udalost, parit sa je cinnost viacerych mravcov a najedenie sa
        //nie je pohybova cinnost a tak maju samostatny typ udalosti
        public static void NastavenieCinnostiMravca(Halda <Udalost> halda, int cas, Mravec mravec, Mravenisko mravenisko)
        {
            CinnostiMravcov cinnostiMravcovNova = ZistenieCinnostiMravca(ZistiTypPolickaSucasne(mravenisko, mravec.ZistiTypyMravcov(),
                                                                                                mravec.ZistiSuradnica()), ZistiTypPolickaVpredu(mravenisko, mravec.ZistiTypyMravcov(),
                                                                                                                                                NasledujucePolickoMraveniska.ZistiSuradniceNasledujucehoPolicka(
                                                                                                                                                    mravec.ZistiSuradnica(),
                                                                                                                                                    mravec.ZistiSmerPohybu(), mravenisko.ZistiRozmerMraveniska())),
                                                                         mravec.ZistiTypyMravcov());

            mravec.NastavCinnostMravca(cinnostiMravcovNova);


            if (cinnostiMravcovNova == CinnostiMravcov.paritSa)
            {
                mravec.NastavParitSa(true);
                if (!NastaveneHodnotyPocasKrokov.ZistiParenie())
                {
                    Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.paritSa,
                                                  TypyUdalosti.paritSa);
                    halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());

                    NastaveneHodnotyPocasKrokov.NastavParenie(true);
                }
            }
            else if (cinnostiMravcovNova == CinnostiMravcov.najedzSa)
            {
                Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.vykonanieCinnostiMravcovNepohybovych,
                                              TypyUdalosti.vykonanieCinnostiMravcovNepohybovych, mravec);
                halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
            }
            else
            {
                Udalost udalost = new Udalost(cas + 1, (int)TypyUdalosti.vykonanieCinnostiMravcovPohybovych + (int)cinnostiMravcovNova,
                                              TypyUdalosti.vykonanieCinnostiMravcovPohybovych, mravec);

                halda.VlozPrvok(udalost, udalost.ZistiCasNastania(), udalost.ZistiPriorita());
            }
        }
Example #16
0
        //vykona cinnosti, ktore suvisua s pohybom mravcov (okrem boja)
        public static void VykonanieCinnostiMravcovPohyb(Udalost udalost, Mravenisko mravenisko, Halda <Udalost> halda, int cas)
        {
            Mravec mravec = udalost.ZistiObjektMravec();

            switch (udalost.ZistiCinnostMravca())
            {
            case CinnostiMravcov.zostan:
                mravec.ZostanStat(mravenisko, cas);
                break;

            case CinnostiMravcov.otocSaVlavo:
                mravec.OtocSaVlavo(mravenisko, cas);
                break;

            case CinnostiMravcov.chodDopreduUtok:
                mravec.ChodDopreduUtok(mravenisko, cas);
                break;

            case CinnostiMravcov.chodDopreduObrana:
                mravec.ChodDopreduObrana(mravenisko, cas);
                break;
            }
        }
        public static bool RoztriedUdalost(Udalost udalost, Mravenisko mravenisko, Halda <Udalost> halda, ref int cas)
        {
            switch (udalost.ZistiUdalost())
            {
            case TypyUdalosti.zvysenieCasu:
                cas++; SpravaUdalosti.ZvysenieCasuMraveniska(mravenisko, halda, cas);
                break;

            case TypyUdalosti.navysenieVekuMravcov:
                SpravaUdalosti.NavysenieVekuMravcov(mravenisko, halda, cas);
                break;

            case TypyUdalosti.vykonanieCinnostiMravcovPohybovych:
                SpravaUdalosti.VykonanieCinnostiMravcovPohyb(
                    udalost, mravenisko, halda, cas);
                break;

            case TypyUdalosti.bojMravcovPrechadzajucich:
                SpravaUdalosti.BojMravcovPrechadzajucich(mravenisko, halda,
                                                         cas);
                break;

            case TypyUdalosti.bojMravcovNaPolickach:
                SpravaUdalosti.BojMravcovNaPolickach(mravenisko, halda, cas);
                break;

            case TypyUdalosti.paritSa:
                SpravaUdalosti.ParitSa(mravenisko, cas);
                break;

            case TypyUdalosti.vykonanieCinnostiMravcovNepohybovych:
                SpravaUdalosti.VykonanieCinnnostiMravcovNepohyb(
                    udalost, mravenisko, halda, cas);
                break;

            case TypyUdalosti.upravyNepohybujucichPolicok:
                SpravaUdalosti.UpravaNepohybujucichSaPolicok(
                    mravenisko, halda, cas);
                break;

            case TypyUdalosti.znizenieEnergiaNaKonci:
                SpravaUdalosti.ZnizenieEnergiaNaKonci(
                    mravenisko, halda, cas);
                break;

            case TypyUdalosti.vypisStatistickychUdajov:
                SpravaUdalosti.VypisStatistickychUdajov(mravenisko, halda, cas);
                break;

            case TypyUdalosti.nastavenieNasledujucichCinnostiMravcov:
                SpravaUdalosti.NastavenieNovychCinnostiMravcov(mravenisko, halda, cas);
                break;

            case TypyUdalosti.precistenieHodnot:
                SpravaUdalosti.PrecistenieNastavenychHodnot(mravenisko, halda, cas);
                break;

            case TypyUdalosti.grafickyVypisMraveniska:
                SpravaUdalosti.GrafickyVypisMraveniska(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.otazkaNaKoniec:
                NastaveneHodnotyPocasKrokov.NastavPokracovanie(SpravaUdalosti.OtazkaNaUkoncenieMraveniska(mravenisko, halda, cas));
                break;

            case TypyUdalosti.grafickyVypisMraveniskaBojPrechadzajuci:
                SpravaUdalosti.GrafickyVypisMraveniskaBojPrechadzanie(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.grafickyVypisMraveniskaBojNaPolicku:
                SpravaUdalosti.GrafickyVypisMraveniskaBojPolicku(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.grafickyVypisMraveniskaParenie:
                SpravaUdalosti.GrafickyVypisMraveniskaPoPareni(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.grafickyVypisSmerOtocenia:
                SpravaUdalosti.GrafickyVypisMraveniskaSmerOtocenia(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.grafickyvVypisPoVykonaniCinnostiNepohybovych:
                SpravaUdalosti.GrafickyVypisMraveniskaPoVykonaniCinnostiNepohybovych(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.grafickyVypisPoZnizeniEnergieMravcov:
                SpravaUdalosti.GrafickyVypisMraveniskaPoZnizeniEnergie(mravenisko, halda, cas);
                return(true);

            case TypyUdalosti.grafickyVypisSmerAktivnehoPohybuStatie:
                SpravaUdalosti.GrafickyVypisMraveniskaSmerAktivnehoPohybuStatie(mravenisko, halda, cas);
                return(true);
            }

            return(false);
        }