예제 #1
0
        public void ChodDopredu(int rozmerMraveniska)
        {
            Suradnice suradnice     = ZistiSuradnica();
            Suradnice noveSuradnice = default(Suradnice);

            noveSuradnice = NasledujucePolickoMraveniska.ZistiSuradniceNasledujucehoPolicka(suradnice, ZistiSmerPohybu(),
                                                                                            rozmerMraveniska);

            NastavXSuradnicuPredchadzajuceSuradnice(ZistiXSuradnicu());
            NastavYSuradnicuPredchadzajuceSuradnice(ZistiYSuradnicu());
            NastavXSuradnicu(noveSuradnice.ZistiXSuradnicu());
            NastavYSuradnicu(noveSuradnice.ZistiYSuradnicu());
        }
        //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());
            }
        }