Exemple #1
0
        //zakladne vyfarbovanie policka
        private static void ZakladneVyfarbovaniePolicok(int i, int j, int velkostStvorceka, Mravenisko mravenisko, Graphics graphics)
        {
            switch (mravenisko.VratObjektNepohybujuceSaNaDanychSuradniciach(new Suradnice(i, j)).ZistiTypObjektu())
            {
            case TypyObjektov.skala:
            {
                VykresliObdlznik(i * velkostStvorceka, j * velkostStvorceka, velkostStvorceka, velkostStvorceka, Color.Gray, graphics);
            }
            break;

            case TypyObjektov.potrava:
            {
                VykresliObdlznik(i * velkostStvorceka, j * velkostStvorceka, velkostStvorceka, velkostStvorceka, Color.LawnGreen, graphics);

                if (mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count > 0)
                {
                    VykresliMravcov(mravenisko, graphics, i, j, velkostStvorceka, 2);
                }
            }
            break;

            case TypyObjektov.prazdnaZem:
            {
                VykresliObdlznik(i * velkostStvorceka, j * velkostStvorceka, velkostStvorceka, velkostStvorceka, Color.Khaki, graphics);

                if (mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count > 0)
                {
                    VykresliMravcov(mravenisko, graphics, i, j, velkostStvorceka, 2);
                }
            }
            break;
            }
        }
Exemple #2
0
        //vykresli smer otocenia mravcov na polickach
        private static bool VykresliSmerOtoceniaMravcovNaPolickach(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka)
        {
            bool smerPohybuS = false, smerPohybuZ = false, smerPohybuJ = false, smerPohybuV = false;

            foreach (PohybujuceSaObjekty objekt in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)))
            {
                Mravec mravec = objekt as Mravec;

                switch (mravec.ZistiSmerPohybu())
                {
                case SmerPohybu.s: smerPohybuS = true; break;

                case SmerPohybu.z: smerPohybuZ = true; break;

                case SmerPohybu.j: smerPohybuJ = true; break;

                case SmerPohybu.v: smerPohybuV = true; break;
                }
            }

            Pen        pen        = new Pen(Color.Black, 2);
            SolidBrush solidBrush = new SolidBrush(Color.Yellow);

            int zakladX = i * velkostStvorceka;
            int zakladY = j * velkostStvorceka;

            if (smerPohybuS)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka / 4,
                                    zakladX + velkostStvorceka / 2, zakladY + 1, zakladX + velkostStvorceka * 3 / 4, zakladY + velkostStvorceka / 4);
            }

            if (smerPohybuZ)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka / 4,
                                    zakladX + 1, zakladY + velkostStvorceka / 2, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka * 3 / 4);
            }

            if (smerPohybuJ)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka * 3 / 4,
                                    zakladX + velkostStvorceka / 2, zakladY + velkostStvorceka - 1, zakladX + velkostStvorceka * 3 / 4,
                                    zakladY + velkostStvorceka * 3 / 4);
            }

            if (smerPohybuV)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka * 3 / 4, zakladY + velkostStvorceka / 4,
                                    zakladX + velkostStvorceka - 1, zakladY + velkostStvorceka / 2, zakladX + velkostStvorceka * 3 / 4,
                                    zakladY + velkostStvorceka * 3 / 4);
            }

            if (smerPohybuV || smerPohybuS || smerPohybuZ || smerPohybuJ)
            {
                return(true);
            }

            return(false);
        }
Exemple #3
0
 //zistenie novych pozicii mravcov
 private static void ZistiNovePozicieMravcov(Mravenisko mravenisko)
 {
     for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
     {
         for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
         {
             if (mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count > 0)
             {
                 Mravec mravec = mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j))[0] as Mravec;
                 typyMravcePoPohybe[i, j] = mravec.ZistiTypyMravcov();
             }
             else
             {
                 typyMravcePoPohybe[i, j] = TypyMravcov.defaulMravec;
             }
         }
     }
 }
Exemple #4
0
        //nastavi ako sa maju vykreslit mravce v zakladnej podobe
        private static void VykresliMravcov(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka, int velkostCast)
        {
            Color farba = ZistiFarbuMravcov((mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j))[0] as Mravec).ZistiTypyMravcov());

            VykresliObdlznik(i * velkostStvorceka, j * velkostStvorceka,
                             velkostStvorceka / velkostCast,
                             velkostStvorceka, farba,
                             graphics);
        }
Exemple #5
0
        //vykresli policka, kde prebieha parenie
        private static bool VykresliMravcovParenie(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka)
        {
            if (mravenisko.ZistiParenie(i, j))
            {
                VykresliObdlznik(i * velkostStvorceka, j * velkostStvorceka, velkostStvorceka, velkostStvorceka, Color.White, graphics);
                VykresliElipsu(i * velkostStvorceka, j * velkostStvorceka, velkostStvorceka, velkostStvorceka,
                               ZistiFarbuMravcov((mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j))[0] as Mravec).ZistiTypyMravcov()), graphics);

                return(true);
            }

            return(false);
        }
Exemple #6
0
        //vykresli kruh, tam kde mravce zostali stat
        private static bool VykresliZostanieStatiaMravcov(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka)
        {
            bool zostaliStat = false;

            foreach (PohybujuceSaObjekty objekt in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)))
            {
                Mravec mravec = objekt as Mravec;

                if (mravec.ZistiCinnostMravca() == CinnostiMravcov.zostan)
                {
                    zostaliStat = true;
                }
            }

            if (zostaliStat)
            {
                VykresliElipsu(i * velkostStvorceka + velkostStvorceka / 4, j * velkostStvorceka + velkostStvorceka / 4, velkostStvorceka / 2, velkostStvorceka / 2,
                               Color.Aqua, graphics);
                return(true);
            }

            return(false);
        }
Exemple #7
0
        //vykresli policka, kde sa mravce uspesne najedli, taktiez vypise kolko mravcov sa najedlo
        private static bool VykresliJedenieMravcov(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka)
        {
            int pocetMravcovNajedlo = 0;

            if (mravenisko.ZistiJedenie(i, j))
            {
                foreach (PohybujuceSaObjekty objekt in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)))
                {
                    Mravec mravec = objekt as Mravec;

                    if (mravec.ZistiCinnostMravca() == CinnostiMravcov.najedzSa && mravec.ZistiPodariloSa() == true)
                    {
                        pocetMravcovNajedlo++;
                    }
                }

                VykresliObdlznik(i * velkostStvorceka, j * velkostStvorceka, velkostStvorceka, velkostStvorceka, Color.LightGreen, graphics);
                VypisPocetMravcovNaPolicku(i, j, velkostStvorceka, velkostStvorceka, velkostStvorceka, pocetMravcovNajedlo, graphics, Color.Black);

                return(true);
            }

            return(false);
        }
Exemple #8
0
        //vykresli smer pohybu mravcov na polickach
        private static bool VykresliSmerPohybuMravcovNaPolickach(Mravenisko mravenisko, Graphics graphics, int i, int j, int velkostStvorceka)
        {
            bool aktivnySmerPohybuS = false; bool aktivneSmerPohybuZ = false; bool aktivnySmerPohybuJ = false; bool aktivnySmerPohybuV = false;

            foreach (PohybujuceSaObjekty pohybujuceSaObjekty in mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)))
            {
                Mravec mravec = pohybujuceSaObjekty as Mravec;

                if (mravec.ZistiCinnostMravca() == CinnostiMravcov.chodDopreduObrana || mravec.ZistiCinnostMravca() == CinnostiMravcov.chodDopreduUtok)
                {
                    switch (mravec.ZistiSmerPohybu())
                    {
                    case SmerPohybu.s: aktivnySmerPohybuS = true; break;

                    case SmerPohybu.v: aktivnySmerPohybuV = true; break;

                    case SmerPohybu.j: aktivnySmerPohybuJ = true; break;

                    case SmerPohybu.z: aktivneSmerPohybuZ = true; break;
                    }
                }
            }

            int zakladX = i * velkostStvorceka;
            int zakladY = j * velkostStvorceka;

            Pen        pen        = new Pen(Color.Black, 2);
            SolidBrush solidBrush = new SolidBrush(Color.WhiteSmoke);

            if (aktivnySmerPohybuS)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka / 4,
                                    zakladX + velkostStvorceka / 2, zakladY + 1, zakladX + velkostStvorceka * 3 / 4, zakladY + velkostStvorceka / 4);
            }

            if (aktivneSmerPohybuZ)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka / 4,
                                    zakladX + 1, zakladY + velkostStvorceka / 2, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka * 3 / 4);
            }

            if (aktivnySmerPohybuJ)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka / 4, zakladY + velkostStvorceka * 3 / 4,
                                    zakladX + velkostStvorceka / 2, zakladY + velkostStvorceka - 1, zakladX + velkostStvorceka * 3 / 4,
                                    zakladY + velkostStvorceka * 3 / 4);
            }

            if (aktivnySmerPohybuV)
            {
                VykresliTrojuholnik(pen, solidBrush, graphics, zakladX + velkostStvorceka * 3 / 4, zakladY + velkostStvorceka / 4,
                                    zakladX + velkostStvorceka - 1, zakladY + velkostStvorceka / 2, zakladX + velkostStvorceka * 3 / 4,
                                    zakladY + velkostStvorceka * 3 / 4);
            }

            if (aktivnySmerPohybuS || aktivneSmerPohybuZ || aktivnySmerPohybuJ || aktivnySmerPohybuV)
            {
                return(true);
            }

            return(false);
        }
Exemple #9
0
        //zacne vykreslovanie mraveniska
        private static void VykresliMravenisko(Mravenisko mravenisko, Graphics graphics, TabPage tabPage)
        {
            int  vyska;
            int  sirka;
            int  velkostStvorceka;
            bool hodnota;

            vyska            = tabPage.Height;
            sirka            = tabPage.Width;
            velkostStvorceka = Math.Min(vyska / mravenisko.ZistiRozmerMraveniska(), sirka / mravenisko.ZistiRozmerMraveniska());

            for (int i = 0; i < mravenisko.ZistiRozmerMraveniska(); i++)
            {
                for (int j = 0; j < mravenisko.ZistiRozmerMraveniska(); j++)
                {
                    hodnota = false;

                    switch (mravenisko.ZistiFazaMraveniska())
                    {
                    case FazaMraveniska.poNastaveniSmerOtocenia:
                    {
                        RozhodnutieOZakladnomVyfarbeniPredVyfarbenimAkcie(mravenisko, graphics, i, j, velkostStvorceka);


                        if (mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count > 0)
                        {
                            hodnota = VykresliSmerOtoceniaMravcovNaPolickach(mravenisko, graphics, i, j, velkostStvorceka);
                        }

                        if (hodnota)
                        {
                            zakladneZobrazenie[i, j] = false;
                        }
                    }
                    break;

                    case FazaMraveniska.poNastaveniSmerAktivnehoPohybuStatie:
                    {
                        RozhodnutieOZakladnomVyfarbeniPredVyfarbenimAkcie(mravenisko, graphics, i, j, velkostStvorceka);


                        if (mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count > 0)
                        {
                            hodnota = VykresliSmerPohybuMravcovNaPolickach(mravenisko, graphics, i, j, velkostStvorceka);

                            if (hodnota)
                            {
                                VykresliZostanieStatiaMravcov(mravenisko, graphics, i, j, velkostStvorceka);
                            }
                            else
                            {
                                hodnota = VykresliZostanieStatiaMravcov(mravenisko, graphics, i, j, velkostStvorceka);
                            }
                        }

                        if (hodnota)
                        {
                            zakladneZobrazenie[i, j] = false;
                        }
                    }
                    break;

                    case FazaMraveniska.poBojiPrechadzani:
                    {
                        hodnota = VykresliBojPriPrechadzaniPolicka(mravenisko, graphics, i, j, velkostStvorceka);
                        RozhodnutieOZakladnomVyfarbeni(i, j, velkostStvorceka, mravenisko, graphics, hodnota);
                    }
                    break;

                    case FazaMraveniska.poBojiPolicku:
                    {
                        hodnota = VykresliMravcovBojNaPolickach(mravenisko, graphics, i, j, velkostStvorceka);
                        RozhodnutieOZakladnomVyfarbeni(i, j, velkostStvorceka, mravenisko, graphics, hodnota);
                    }
                    break;

                    case FazaMraveniska.poPareni:
                    {
                        hodnota = VykresliMravcovParenie(mravenisko, graphics, i, j, velkostStvorceka);
                        RozhodnutieOZakladnomVyfarbeni(i, j, velkostStvorceka, mravenisko, graphics, hodnota);
                    }
                    break;

                    case FazaMraveniska.poVykonaniCinnostiNepohybovych:
                    {
                        hodnota = VykresliJedenieMravcov(mravenisko, graphics, i, j, velkostStvorceka);

                        RozhodnutieOZakladnomVyfarbeni(i, j, velkostStvorceka, mravenisko, graphics, hodnota);
                    }
                    break;

                    case FazaMraveniska.poZnizeniEnergie:
                    {
                        hodnota = VykresliUbytokMravcovKoniec(mravenisko, graphics, velkostStvorceka, i, j);

                        RozhodnutieOZakladnomVyfarbeni(i, j, velkostStvorceka, mravenisko, graphics, hodnota);
                    }
                    break;

                    case FazaMraveniska.poKonciKroku:
                    {
                        RozhodnutieOZakladnomVyfarbeniPredVyfarbenimAkcie(mravenisko, graphics, i, j, velkostStvorceka);

                        if (mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count > 0)
                        {
                            VypisPocetMravcovNaPolicku(i, j, velkostStvorceka, velkostStvorceka, velkostStvorceka,
                                                       mravenisko.VratObjektPohybujuceSaNaDanychSuradniciachZobrazovanie(new Suradnice(i, j)).Count,
                                                       graphics, Color.Black);

                            zakladneZobrazenie[i, j] = false;
                        }
                    }
                    break;
                    }
                }
            }

            if (mravenisko.ZistiFazaMraveniska() == FazaMraveniska.poBojiPrechadzani)
            {
                VykresliBojPriPrechadzaniSpojniceUvod(mravenisko, graphics, velkostStvorceka);
            }
        }