Exemplo n.º 1
0
        //najdenie vhodnych pozicii pre mravca
        private List <int[]> VyberPoziciiPreMravca(int pocetPoziciiNaVybratie, List <int[]> pozicie,
                                                   TypyMravcov typyMravcov)
        {
            List <int[]> pozicieNove = new List <int[]>();

            int[] pozicia;

            int pocetVolnychPoziciiNaVybratieTyp = Math.Min((rozmer * rozmer - ZistiPocetSkaly()) / Math.Max(pocetTypovMravcovZaciatok, 1), pocetPoziciiNaVybratie);

            for (int i = 0; i < pocetVolnychPoziciiNaVybratieTyp; i++)
            {
                int index = GenerovanieHodnot.random.Next(0, pozicie.Count);
                pozicia = new int[2];
                pozicia = pozicie[index];
                pozicieNove.Add(pozicia);
                pozicie.RemoveAt(index);
            }

            while (pozicieNove.Count < pocetPoziciiNaVybratie)
            {
                int index = GenerovanieHodnot.random.Next(0, pozicieNove.Count);
                pozicia = new int[2];
                pozicia = pozicieNove[index];
                pozicieNove.Add(pozicia);
            }

            return(pozicieNove);
        }
        //zisti cinnost mravca, ktora vypliva z policok pred mravcom a na ktorom stoji
        private static CinnostiMravcov ZistenieCinnostiMravca(TypyPolicok typyPolicokSucasne, TypyPolicok typyPolicokPred,
                                                              TypyMravcov typyMravcov)
        {
            int polickoSucasne;
            int polickoPred;

            polickoPred    = (int)typyPolicokPred;
            polickoSucasne = (int)typyPolicokSucasne;

            if (polickoSucasne > 0)
            {
                polickoSucasne--;
            }

            CinnostiMravcov cinnostMravca;

            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1: { cinnostMravca = Konstanty.strategiaMravcaTypu1.ZistiStrategiaPodlaSuradnice(polickoSucasne, polickoPred); break; }

            case TypyMravcov.MravecTypu2: { cinnostMravca = Konstanty.strategiaMravcaTypu2.ZistiStrategiaPodlaSuradnice(polickoSucasne, polickoPred); break; }

            case TypyMravcov.MravecTypu3: { cinnostMravca = Konstanty.strategiaMravcaTypu3.ZistiStrategiaPodlaSuradnice(polickoSucasne, polickoPred); break; }

            case TypyMravcov.MravecTypu4: { cinnostMravca = Konstanty.strategiaMravcaTypu4.ZistiStrategiaPodlaSuradnice(polickoSucasne, polickoPred); break; }

            default: cinnostMravca = default(CinnostiMravcov); break;
            }

            return(cinnostMravca);
        }
Exemplo n.º 3
0
        public void PridanieMravcaKonkretnaPozicia(TypyMravcov typyMravcov, int xSuradnica, int ySuradnica, int energia, int cas)
        {
            Mravec mravec;

            mravec = new Mravec(xSuradnica, ySuradnica, true, true, typyMravcov, cisloNasledujucehoMravca, energia);
            mraveniskoMravce[xSuradnica, ySuradnica].Add(mravec);
            //
            cisloNasledujucehoMravca++;

            pocet++;

            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1: ZvysPocetMravcovTypu1(); break;

            case TypyMravcov.MravecTypu2: ZvysPocetMravcovTypu2(); break;

            case TypyMravcov.MravecTypu3: ZvysPocetMravcovTypu3(); break;

            case TypyMravcov.MravecTypu4: ZvysPocetMravcovTypu4(); break;
            }
            HlaskyCinnostiMravcovStavObjektov.MravecVznikolNaPolickuSoZaciatocnouEnergiou(cas, mravec.ZistiIdMravca(),
                                                                                          (int)mravec.ZistiTypyMravcov() + 1,
                                                                                          mravec.ZistiXSuradnicu(), mravec.ZistiYSuradnicu(),
                                                                                          energia);
            Console.WriteLine(pocet);
        }
Exemplo n.º 4
0
        //spracuje mravce, ktore zanikli pri suboji
        private static void VymazMravcePodlaTypu(Mravenisko mravenisko, TypyMravcov typyMravcov, Suradnice suradniceTypu1,
                                                 Suradnice suradniceTypu2, Suradnice suradniceTypu3,
                                                 Suradnice suradniceTypu4, List <Mravec> mravceTypu1, List <Mravec> mravceTypu2,
                                                 List <Mravec> mravceTypu3, List <Mravec> mravceTypu4, int cas)
        {
            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1:
                VymazMravce(mravenisko, suradniceTypu2, mravceTypu2, cas);
                VymazMravce(mravenisko, suradniceTypu3, mravceTypu3, cas);
                VymazMravce(mravenisko, suradniceTypu4, mravceTypu4, cas); break;

            case TypyMravcov.MravecTypu2:
                VymazMravce(mravenisko, suradniceTypu1, mravceTypu1, cas);
                VymazMravce(mravenisko, suradniceTypu3, mravceTypu3, cas);
                VymazMravce(mravenisko, suradniceTypu4, mravceTypu4, cas); break;

            case TypyMravcov.MravecTypu3:
                VymazMravce(mravenisko, suradniceTypu1, mravceTypu1, cas);
                VymazMravce(mravenisko, suradniceTypu2, mravceTypu2, cas);
                VymazMravce(mravenisko, suradniceTypu4, mravceTypu4, cas); break;

            case TypyMravcov.MravecTypu4:
                VymazMravce(mravenisko, suradniceTypu1, mravceTypu1, cas);
                VymazMravce(mravenisko, suradniceTypu2, mravceTypu2, cas);
                VymazMravce(mravenisko, suradniceTypu3, mravceTypu3, cas); break;
            }
        }
Exemplo n.º 5
0
        //spravuje parenie mravcov, na to aby vznikli nove mravce musia byt splnene urcite podmienky
        public static void ParenieMravcovDanaSuradnica(Mravenisko mravenisko, Suradnice suradnica, int cas)
        {
            List <Mravec> pariaceSaMravce = new List <Mravec>();
            int           xSuradnica      = suradnica.ZistiXSuradnicu();
            int           ySuradnica      = suradnica.ZistiYSuradnicu();

            foreach (PohybujuceSaObjekty pohybObjekt in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(suradnica))
            {
                Mravec mravec = pohybObjekt as Mravec;

                if (mravec.ZistiParitSa())
                {
                    HlaskyCinnostiMravcovStavObjektov.MravecSaRozhodolParit(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                            suradnica.ZistiXSuradnicu(), suradnica.ZistiYSuradnicu());
                    if (mravec.ZistiEnergiaMravca() > 3)
                    {
                        pariaceSaMravce.Add(mravec);
                    }
                }
            }
            int energiaPreMravcov = 0;
            int energia           = 0;

            int pocetMravcovNovych = pariaceSaMravce.Count / 2;

            if (pocetMravcovNovych > 0)
            {
                mravenisko.NastavParenie(xSuradnica, ySuradnica, true);

                foreach (Mravec mravec in pariaceSaMravce)
                {
                    energia            = mravec.ZistiEnergiaMravca() / 3;
                    energiaPreMravcov += energia;
                    mravec.ZnizEnergia(energia);
                    HlaskyCinnostiMravcovStavObjektov.MravecSaPari(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                   suradnica.ZistiXSuradnicu(), suradnica.ZistiYSuradnicu());
                    HlaskyCinnostiMravcovStavObjektov.ZnizenaEnergiaMravcaParenie(cas, mravec.ZistiIdMravca(), (int)mravec.ZistiTypyMravcov() + 1,
                                                                                  mravec.ZistiXSuradnicu(),
                                                                                  mravec.ZistiYSuradnicu(), mravec.ZistiEnergiaMravca());
                    mravec.NastavPodariloSa(true);
                }

                energia = energiaPreMravcov / pocetMravcovNovych;

                TypyMravcov typyMravcov = default(TypyMravcov);
                typyMravcov = pariaceSaMravce[0].ZistiTypyMravcov();

                for (int i = 0; i < pocetMravcovNovych - 1; i++)
                {
                    mravenisko.PridanieMravcaKonkretnaPozicia(typyMravcov, xSuradnica, ySuradnica, energia, cas);
                    energiaPreMravcov -= energia;
                }

                mravenisko.PridanieMravcaKonkretnaPozicia(typyMravcov, xSuradnica, ySuradnica, energiaPreMravcov, cas);
            }
        }
Exemplo n.º 6
0
        private void PridanieMravcov(TypyMravcov typyMravcov, int pocetMravcov)
        {
            List <int[]> volnePozicie = VyberPoziciiPreMravca(pocetMravcov, NajdenieVhodnychPoziciiPreMravca(TypyObjektov.potrava, typyMravcov), typyMravcov);

            foreach (int[] pozicia in volnePozicie)
            {
                PridanieMravcaKonkretnaPozicia(typyMravcov, pozicia[0], pozicia[1], Konstanty.maximumEnergiaMravec,
                                               casExistencieMraveniska);
            }
        }
Exemplo n.º 7
0
        //zisti pritomnost daneho typu mravcov v poli, ktore obsahuje typy mravcov
        private static bool ZistiPritomnostMravcovDanehoTypu(TypyMravcov typyMravcov, List <TypyMravcov> typyMravcovs)
        {
            foreach (TypyMravcov typMravca in typyMravcovs)
            {
                if (typMravca == typyMravcov)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 8
0
        //spravuje vyhru
        public static void SpracujVyhru(Suradnice suradniceTypu1, Suradnice suradniceTypu2, Suradnice suradniceTypu3,
                                        Suradnice suradniceTypu4, TypyMravcov typyMravcov, List <Mravec> mravceTypu1, List <Mravec> mravceTypu2,
                                        List <Mravec> mravceTypu3, List <Mravec> mravceTypu4, TypySubojov typySubojov, int cas)
        {
            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1: SpravaVyhry(mravceTypu1, suradniceTypu1, typySubojov, cas); break;

            case TypyMravcov.MravecTypu2: SpravaVyhry(mravceTypu2, suradniceTypu2, typySubojov, cas); break;

            case TypyMravcov.MravecTypu3: SpravaVyhry(mravceTypu3, suradniceTypu3, typySubojov, cas); break;

            case TypyMravcov.MravecTypu4: SpravaVyhry(mravceTypu4, suradniceTypu4, typySubojov, cas); break;
            }
        }
Exemplo n.º 9
0
        //zisti farbu mravcov podla typu
        private static Color ZistiFarbuMravcov(TypyMravcov typyMravcov)
        {
            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1: return(Color.Blue);

            case TypyMravcov.MravecTypu2: return(Color.Orange);

            case TypyMravcov.MravecTypu3: return(Color.Pink);

            case TypyMravcov.MravecTypu4: return(Color.LimeGreen);
            }

            return(default(Color));
        }
        //zisti typ policka vpredu, dostane suradnice policka, ktore je vpredu
        private static TypyPolicok ZistiTypPolickaVpredu(Mravenisko mravenisko, TypyMravcov typyMravcov, Suradnice suradnice)
        {
            TypyPolicok typyPolicok = default(TypyPolicok);

            switch (mravenisko.VratObjektNepohybujuceSaNaDanychSuradniciach(suradnice).ZistiTypObjektu())
            {
            case TypyObjektov.skala:
                typyPolicok = TypyPolicok.skala; break;

            case TypyObjektov.prazdnaZem:
            {
                List <PohybujuceSaObjekty> mravce = mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(suradnice);
                if (mravce.Count == 0)
                {
                    typyPolicok = TypyPolicok.prazdnaZem;
                }
                else if ((mravce[0] as Mravec).ZistiTypyMravcov() == typyMravcov)
                {
                    typyPolicok = TypyPolicok.priatelPrazdnaZem;
                }
                else
                {
                    typyPolicok = TypyPolicok.nepriatelPrazdnaZem;
                }
            }
            break;

            case TypyObjektov.potrava:
            {
                List <PohybujuceSaObjekty> mravce = mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(suradnice);
                if (mravce.Count == 0)
                {
                    typyPolicok = TypyPolicok.potrava;
                }
                else if ((mravce[0] as Mravec).ZistiTypyMravcov() == typyMravcov)
                {
                    typyPolicok = TypyPolicok.priatelPotrava;
                }
                else
                {
                    typyPolicok = TypyPolicok.nepriatelPotrava;
                }
            }
            break;
            }

            return(typyPolicok);
        }
Exemplo n.º 11
0
        //spracovanie suboja mravcov roznych typov na danom policku
        public static void SubojNepohybujuce(Mravenisko mravenisko, Suradnice suradnice, int cas)
        {
            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>();

            RoztriedMravceNaPolickuPodlaTypovSuradnice(suradnice, mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4);

            int energiaMravceTypu1 = ZistiEnergiaMravcov(mravceTypu1);
            int energiaMravceTypu2 = ZistiEnergiaMravcov(mravceTypu2);
            int energiaMravceTypu3 = ZistiEnergiaMravcov(mravceTypu3);
            int energiaMravceTypu4 = ZistiEnergiaMravcov(mravceTypu4);

            int pocetMravcovCelkovo;

            pocetMravcovCelkovo = mravceTypu1.Count + mravceTypu2.Count + mravceTypu3.Count + mravceTypu4.Count;

            //pokial ma suboj zmysel, tak sa spusti
            if (PritomnostMravceViacTypov(pocetMravcovCelkovo, mravceTypu1.Count, mravceTypu2.Count, mravceTypu3.Count, mravceTypu4.Count))
            {
                VlozPolickBojNepohybujuci(suradnice, mravenisko, mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4);

                TypyMravcov typyMravcov = ZistiVyhercaSuboja(energiaMravceTypu1, energiaMravceTypu2, energiaMravceTypu3, energiaMravceTypu4);

                SpracujVyhru(suradnice, suradnice, suradnice, suradnice, typyMravcov, mravceTypu1, mravceTypu2,
                             mravceTypu3, mravceTypu4, TypySubojov.subojPriStatiNaPolicku, cas);

                NastavNeparenie(mravceTypu1);
                NastavNeparenie(mravceTypu2);
                NastavNeparenie(mravceTypu3);
                NastavNeparenie(mravceTypu4);

                NastavBojovalNaPolickuDetail(mravceTypu1);
                NastavBojovalNaPolickuDetail(mravceTypu2);
                NastavBojovalNaPolickuDetail(mravceTypu3);
                NastavBojovalNaPolickuDetail(mravceTypu4);

                VymazMravcePodlaTypu(mravenisko, typyMravcov, suradnice, suradnice, suradnice, suradnice,
                                     mravceTypu1, mravceTypu2, mravceTypu3, mravceTypu4, cas);
            }
        }
Exemplo n.º 12
0
        //pokial je vybraty v casti Nastavenia mravce typ mravca a jeho konanie v kazdej situacii, tak
        //sa nastavi jeho strategia pomocou funkkcii Nastav, NastavCinnostPozicia a NastavCinnostMravca
        public static void Nastav(ListView vyber, NumericUpDown numericUpDownPocetMravcovTypu3, NumericUpDown numericUpDownPocetMravcovTypu4)
        {
            if (vyber.SelectedItems.Count > 0)
            {
                switch (vyber.SelectedItems[0].Text)
                {
                case "mravec typu 1": typyMravcov = TypyMravcov.MravecTypu1; break;

                case "mravec typu 2": typyMravcov = TypyMravcov.MravecTypu2; break;

                case "mravec typu 3": typyMravcov = TypyMravcov.MravecTypu3; break;

                case "mravec typu 4": typyMravcov = TypyMravcov.MravecTypu4; break;
                }

                strategiaMravca = new CinnostiMravcov[4, 7];
                bool hodnotaUspech = true;

                for (int i = 0; i < 4; i++)
                {
                    for (int j = 0; j < 7; j++)
                    {
                        if (!NastavCinnostPozicia(i, j, strategiaMravca, (HodnotyStavuSimulacie.ZistiKonanie())[i, j]))
                        {
                            hodnotaUspech = false;
                        }
                    }
                }

                if (hodnotaUspech)
                {
                    NastavCinnostMravca(typyMravcov, strategiaMravca, numericUpDownPocetMravcovTypu3, numericUpDownPocetMravcovTypu4);
                }
                else
                {
                    MessageBox.Show("Nevybrali ste pre mravca konanie vo všetkých situáciách");
                }
            }
            else
            {
                MessageBox.Show("Nevybrali ste typ mravca, pre ktorého sa má nastavit daná stratégia");
            }
        }
Exemplo n.º 13
0
        //nastavi strategiu mravca, taktisto nastavy, ze pocet mravcov typu 3 alebo 4 moze byt rozny od 0, ak sa nastavuje ich strategia
        private static void NastavCinnostMravca(TypyMravcov typyMravcov, CinnostiMravcov[,] cinnostiMravcov,
                                                NumericUpDown numericUpDownPocetMravcovTypu3, NumericUpDown numericUpDownPocetMravcovTypu4)
        {
            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1:
                Konstanty.NastavStrategiuMravceTypu1(cinnostiMravcov);
                NastavNastavenyTyp1(true); break;

            case TypyMravcov.MravecTypu2:
                Konstanty.NastavStrategiuMravceTypu2(cinnostiMravcov);
                NastavNastavenyTyp2(true); break;

            case TypyMravcov.MravecTypu3:
                Konstanty.NastavStrategiuMravceTypu3(cinnostiMravcov); NastavNastavenyTyp3(true);
                NacitaneHodnoty.AktualizujPocetMravcovTypu3(numericUpDownPocetMravcovTypu3); break;

            case TypyMravcov.MravecTypu4:
                Konstanty.NastavStrategiuMravceTypu4(cinnostiMravcov); NastavNastavenyTyp4(true);
                NacitaneHodnoty.AktualizujPocetMravcovTypu4(numericUpDownPocetMravcovTypu4); break;
            }
        }
        //zisti typ policka, na ktorom mravec stoji
        private static TypyPolicok ZistiTypPolickaSucasne(Mravenisko mravenisko, TypyMravcov typyMravcov, Suradnice suradnice)
        {
            TypyPolicok typyPolicok = default(TypyPolicok);

            switch (mravenisko.VratObjektNepohybujuceSaNaDanychSuradniciach(suradnice).ZistiTypObjektu())
            {
            case TypyObjektov.prazdnaZem:
            {
                List <PohybujuceSaObjekty> mravce = mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(suradnice);
                if (mravce.Count > 1)
                {
                    typyPolicok = TypyPolicok.priatelPrazdnaZem;
                }
                else
                {
                    typyPolicok = TypyPolicok.prazdnaZem;
                }
            }
            break;

            case TypyObjektov.potrava:
            {
                List <PohybujuceSaObjekty> mravce = mravenisko.VratObjektPohybujuceSaNaDanychSuradniciach(suradnice);
                if (mravce.Count > 1)
                {
                    typyPolicok = TypyPolicok.priatelPotrava;
                }
                else
                {
                    typyPolicok = TypyPolicok.potrava;
                }
            }
            break;
            }

            return(typyPolicok);
        }
Exemplo n.º 15
0
        //najdenie vhodnych pozicii pre mravca
        private List <int[]> NajdenieVhodnychPoziciiPreMravca(TypyObjektov typyObjektov, TypyMravcov typyMravcov)
        {
            List <int[]> pozicie = new List <int[]>();

            for (int i = 0; i < ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < ZistiRozmerMraveniska(); j++)
                {
                    if ((mraveniskoTypyPolicok[i, j] == default(NepohybujuceSaObjekty) ||
                         mraveniskoTypyPolicok[i, j].ZistiTypObjektu() == TypyObjektov.prazdnaZem ||
                         mraveniskoTypyPolicok[i, j].ZistiTypObjektu() == typyObjektov) &&
                        (mraveniskoMravce[i, j].Count == 0 ||
                         (mraveniskoMravce[i, j][0] as Mravec).ZistiTypyMravcov() == typyMravcov))
                    {
                        int[] pozicia = new int[2];
                        pozicia[0] = i;
                        pozicia[1] = j;
                        pozicie.Add(pozicia);
                    }
                }
            }

            return(pozicie);
        }
 private void NastavTypMravcov(TypyMravcov typyMravcov)
 {
     typMravcov = typyMravcov;
 }
Exemplo n.º 17
0
 private void NastavTypMravca(TypyMravcov typyMravcov)
 {
     this.typyMravcov = typyMravcov;
 }
Exemplo n.º 18
0
        //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);
        }
Exemplo n.º 19
0
 public Mravec(int xSuradnica, int ySuradnica, bool viditelnost, bool existencia, TypyMravcov typyMravcov, int idMravca, int NastavovanieEnergia) : base
         (xSuradnica, ySuradnica, TypyObjektov.mravec, "", viditelnost, existencia)
 {
     NastavEnergiaMravca(NastavovanieEnergia);
     NastavVekMravca();
     NastavTypMravca(typyMravcov);
     NastavIdMravca(idMravca);
     NastavObrana(false);
     NastavDoprednyPohyv();
     NastavUskok(false);
     NastavCinnostMravca(CinnostiMravcov.zostan);
     NastavParitSa(false);
 }
 public PolickaPriPrechadzajucomBoji(Suradnice suradnice, TypyMravcov typyMravcov, PolickaPriPrechadzajucomBoji druhePolicko = default(PolickaPriPrechadzajucomBoji))
 {
     NastavSuradniceMravcov(suradnice);
     NastavTypMravcov(typyMravcov);
     NastavDruhePolicko(druhePolicko);
 }
Exemplo n.º 21
0
        private static bool nastavenyTyp4 = false; //reprezentuje, ci bola nastavena strategia pre mravca typu 4

        public static void NastavTypyMravcov(TypyMravcov typ)
        {
            typyMravcov = typ;
        }
Exemplo n.º 22
0
        //nastavy "suradnice" podla typu mravcov
        private static void NastavSuradnicePodlaTypu(ref Suradnice suradniceTypu1, ref Suradnice suradniceTypu2,
                                                     ref Suradnice suradniceTypu3, ref Suradnice suradniceTypu4, Suradnice suradnice, TypyMravcov typyMravcov)
        {
            switch (typyMravcov)
            {
            case TypyMravcov.MravecTypu1: suradniceTypu1 = suradnice; break;

            case TypyMravcov.MravecTypu2: suradniceTypu2 = suradnice; break;

            case TypyMravcov.MravecTypu3: suradniceTypu3 = suradnice; break;

            case TypyMravcov.MravecTypu4: suradniceTypu4 = suradnice; break;
            }
        }
 public void VlozTypMravca(TypyMravcov typyMravcov)
 {
     typyMravcovPole.Add(typyMravcov);
 }