//spracovanie suboja dvoch proti sebe iducich skupin mravcov (kde jedna skupina obsahuje mravce toho isteho typu) private static void SubojPohybujuce(List <Mravec> mravce1, Suradnice suradnice1, List <Mravec> mravce2, Suradnice suradnice2, Mravenisko mravenisko, int cas) { PolickaPriPrechadzajucomBoji polickaPriPrechadzajucomBoji1 = new PolickaPriPrechadzajucomBoji(suradnice1, mravce1[0].ZistiTypyMravcov()); PolickaPriPrechadzajucomBoji polickaPriPrechadzajucomBoji2 = new PolickaPriPrechadzajucomBoji(suradnice2, mravce2[0].ZistiTypyMravcov(), polickaPriPrechadzajucomBoji1); polickaPriPrechadzajucomBoji1.NastavDruhePolicko(polickaPriPrechadzajucomBoji2); mravenisko.NastavPolickoBojPrechadzajuce(polickaPriPrechadzajucomBoji1, polickaPriPrechadzajucomBoji1.ZistiSuradniceMravcov().ZistiXSuradnicu(), polickaPriPrechadzajucomBoji1.ZistiSuradniceMravcov().ZistiYSuradnicu()); mravenisko.NastavPolickoBojPrechadzajuce(polickaPriPrechadzajucomBoji2, polickaPriPrechadzajucomBoji2.ZistiSuradniceMravcov().ZistiXSuradnicu(), polickaPriPrechadzajucomBoji2.ZistiSuradniceMravcov().ZistiYSuradnicu()); List <Mravec> mravceTypu1 = new List <Mravec>(); List <Mravec> mravceTypu2 = new List <Mravec>(); List <Mravec> mravceTypu3 = new List <Mravec>(); List <Mravec> mravceTypu4 = new List <Mravec>(); List <Mravec> vyherneMravce = new List <Mravec>(); List <Mravec> mravceUskokTypu1 = new List <Mravec>(); List <Mravec> mravecUskokTypu2 = new List <Mravec>(); List <Mravec> mravecUskokTypu3 = new List <Mravec>(); List <Mravec> mravecUskokTypu4 = new List <Mravec>(); RoztriedMravcePodlaTypovMravce(mravce1, mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4); RoztriedMravcePodlaTypovMravce(mravce2, mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4); NastavBojovaliPriPrechodeDetail(mravceTypu1); NastavBojovaliPriPrechodeDetail(mravceTypu2); NastavBojovaliPriPrechodeDetail(mravceTypu3); NastavBojovaliPriPrechodeDetail(mravceTypu4); Suradnice suradniceMravcovTypu1PreUskok = default(Suradnice); Suradnice suradniceMravcovTypu2PreUskok = default(Suradnice); Suradnice suradniceMravcovTypu3PreUskok = default(Suradnice); Suradnice suradniceMravcovTypu4PreUskok = default(Suradnice); Suradnice suradniceMravcovTypu1 = default(Suradnice); Suradnice suradniceMravcovTypu2 = default(Suradnice); Suradnice suradniceMravcovTypu3 = default(Suradnice); Suradnice suradniceMravcovTypu4 = default(Suradnice); NastavSuradnicePodlaTypu(ref suradniceMravcovTypu1PreUskok, ref suradniceMravcovTypu2PreUskok, ref suradniceMravcovTypu3PreUskok, ref suradniceMravcovTypu4PreUskok , suradnice2, mravce1[0].ZistiTypyMravcov()); NastavSuradnicePodlaTypu(ref suradniceMravcovTypu1PreUskok, ref suradniceMravcovTypu2PreUskok, ref suradniceMravcovTypu3PreUskok, ref suradniceMravcovTypu4PreUskok, suradnice1, mravce2[0].ZistiTypyMravcov()); NastavSuradnicePodlaTypu(ref suradniceMravcovTypu1, ref suradniceMravcovTypu2, ref suradniceMravcovTypu3, ref suradniceMravcovTypu4, suradnice1, mravce1[0].ZistiTypyMravcov()); NastavSuradnicePodlaTypu(ref suradniceMravcovTypu1, ref suradniceMravcovTypu2, ref suradniceMravcovTypu3, ref suradniceMravcovTypu4, suradnice2, mravce2[0].ZistiTypyMravcov()); ZistiSpravujUskakujuceMravce(mravenisko, ref mravceTypu1, mravceUskokTypu1, cas); ZistiSpravujUskakujuceMravce(mravenisko, ref mravceTypu2, mravecUskokTypu2, cas); ZistiSpravujUskakujuceMravce(mravenisko, ref mravceTypu3, mravecUskokTypu3, cas); ZistiSpravujUskakujuceMravce(mravenisko, ref mravceTypu4, mravecUskokTypu4, cas); VratMravceNaPolickoZKtorehoIsliUskociliNanTeraz(suradniceMravcovTypu1PreUskok, mravceUskokTypu1, mravenisko, cas); VratMravceNaPolickoZKtorehoIsliUskociliNanTeraz(suradniceMravcovTypu2PreUskok, mravecUskokTypu2, mravenisko, cas); VratMravceNaPolickoZKtorehoIsliUskociliNanTeraz(suradniceMravcovTypu3PreUskok, mravecUskokTypu3, mravenisko, cas); VratMravceNaPolickoZKtorehoIsliUskociliNanTeraz(suradniceMravcovTypu4PreUskok, mravecUskokTypu4, mravenisko, cas); int energiaMravceTypu1 = ZistiEnergiaMravcov(mravceTypu1); int energiaMravceTypu2 = ZistiEnergiaMravcov(mravceTypu2); int energiaMravceTypu3 = ZistiEnergiaMravcov(mravceTypu3); int energiaMravceTypu4 = ZistiEnergiaMravcov(mravceTypu4); TypyMravcov typyMravcov = ZistiVyhercaSuboja(energiaMravceTypu1, energiaMravceTypu2, energiaMravceTypu3, energiaMravceTypu4); SpracujVyhru(suradniceMravcovTypu1, suradniceMravcovTypu2, suradniceMravcovTypu3, suradniceMravcovTypu4, typyMravcov, mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4, TypySubojov.subojPriPrechode, cas); VymazMravcePodlaTypu(mravenisko, typyMravcov, suradniceMravcovTypu1, suradniceMravcovTypu2, suradniceMravcovTypu3, suradniceMravcovTypu4, mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4, cas); }
//vykresli 2 spojnice spajajuce policka, tieto ciary reprezentuju boj mravcov pri prechadzani medzi tymito polickami, //farby ciar reprezentuju typy mravcov, ktore bojuju takisto vykresli private static void VykresliBojPriPrechadzaniSpojnice(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka) { if (mravenisko.ZistiPolickaBojPrechadzajuce(i, j) != default(List <PolickaPriPrechadzajucomBoji>) && mravenisko.ZistiPolickaBojPrechadzajuce(i, j).Count > 0) { foreach (PolickaPriPrechadzajucomBoji polickaPriPrechadzajucomBoji1 in mravenisko.ZistiPolickaBojPrechadzajuce(i, j)) { PolickaPriPrechadzajucomBoji polickaPriPrechadzajucomBoji2 = polickaPriPrechadzajucomBoji1.ZistiDruhePolicko(); Suradnice suradnice1 = polickaPriPrechadzajucomBoji1.ZistiSuradniceMravcov(); Suradnice suradnice2 = polickaPriPrechadzajucomBoji2.ZistiSuradniceMravcov(); Pen pen1 = new Pen(ZistiFarbuMravcov(polickaPriPrechadzajucomBoji1.ZistiTypMravcov()), 3); Pen pen2 = new Pen(ZistiFarbuMravcov(polickaPriPrechadzajucomBoji2.ZistiTypMravcov()), 3); if (NasledujucePolickoMraveniska.SmerJ(suradnice1, mravenisko.ZistiRozmerMraveniska()).ZistiXSuradnicu() == suradnice2.ZistiXSuradnicu() && NasledujucePolickoMraveniska.SmerJ(suradnice1, mravenisko.ZistiRozmerMraveniska()).ZistiYSuradnicu() == suradnice2.ZistiYSuradnicu()) { if (Math.Abs(suradnice1.ZistiYSuradnicu() - suradnice2.ZistiYSuradnicu()) == 1) { VykresliCiaru(pen1, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2); VykresliCiaru(pen2, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2 + 3, velkostStvorceka / 2); } else { VykresliCiaru(pen1, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka + velkostStvorceka / 2, graphics, velkostStvorceka / 2, velkostStvorceka / 2); VykresliCiaru(pen2, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka + velkostStvorceka / 2, graphics, velkostStvorceka / 2 + 3, velkostStvorceka / 2); VykresliCiaru(pen1, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka - velkostStvorceka / 2, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2); VykresliCiaru(pen2, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka - velkostStvorceka / 2, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2 + 3, velkostStvorceka / 2); } } else if (NasledujucePolickoMraveniska.SmerZ(suradnice1, mravenisko.ZistiRozmerMraveniska()).ZistiXSuradnicu() == suradnice2.ZistiXSuradnicu() && NasledujucePolickoMraveniska.SmerZ(suradnice1, mravenisko.ZistiRozmerMraveniska()).ZistiYSuradnicu() == suradnice2.ZistiYSuradnicu()) { if (Math.Abs(suradnice1.ZistiXSuradnicu() - suradnice2.ZistiXSuradnicu()) == 1) { VykresliCiaru(pen1, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2); VykresliCiaru(pen2, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2 + 3); } else { VykresliCiaru(pen1, suradnice1.ZistiXSuradnicu() * velkostStvorceka - velkostStvorceka / 2, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2); VykresliCiaru(pen2, suradnice1.ZistiXSuradnicu() * velkostStvorceka - velkostStvorceka / 2, suradnice1.ZistiYSuradnicu() * velkostStvorceka, suradnice1.ZistiXSuradnicu() * velkostStvorceka, suradnice1.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2 + 3); VykresliCiaru(pen1, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, suradnice2.ZistiXSuradnicu() * velkostStvorceka + velkostStvorceka / 2, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2); VykresliCiaru(pen2, suradnice2.ZistiXSuradnicu() * velkostStvorceka, suradnice2.ZistiYSuradnicu() * velkostStvorceka, suradnice2.ZistiXSuradnicu() * velkostStvorceka + velkostStvorceka / 2, suradnice2.ZistiYSuradnicu() * velkostStvorceka, graphics, velkostStvorceka / 2, velkostStvorceka / 2 + 3); } } } } }