//spusti rozmnozovanie mravcov na jednotlivych polickach public static void ParitSa(Mravenisko mravenisko, int cas) { for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++) { for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++) { SpravaMraveniskaMravcov.ParenieMravcovDanaSuradnica(mravenisko, new Suradnice(i, j), cas); } } }
// 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()); }
//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()); }
//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()); }
//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); }