//reakcia na skoncenie simulacie
        private void skoncenieSimulacie_Click(object sender, EventArgs e)
        {
            if (!HodnotyStavuSimulacie.ZistiBolaUkoncena())
            {
                HodnotyStavuSimulacie.NastavBolaUkoncena(pocetMravcovTypu1Nastavenia,
                                                         pocetMravcovTypu2Nastavenia,
                                                         pocetMravcovTypu3Nastavenia,
                                                         pocetMravcovTypu4Nastavenia,
                                                         pocetSkalNastavenia,
                                                         mnozstvoZaciatocnejPotravyNastavenia,
                                                         minimalneMnozstvoPotravyNastavenia, casLabelVystup, fazaLabelVystup);

                InicializaciaNastaveniHodnot();

                HodnotyNaVypisovanie.VypisUdajeZakladne(dobaSimulacia, pocetMravcovTypu1TerazSimulacia,
                                                        pocetMravcovTypu1CelkovoSimulacia, pocetMravcovTypu2TerazSimulacia,
                                                        pocetMravcovTypu2CelkovoSimulacia, pocetMravcovTypu3TerazSimulacia,
                                                        pocetMravcovTypu3CelkovoSimulacia, pocetMravcovTypu4TerazSimulacia,
                                                        pocetMravcovTypu4CelkovoSimulacia, mnoztvoPotravyTerazSimulacia,
                                                        mnozstvoPotravyCelkovoSimulacia);

                GrafickyVystup.VykresliOknoBezSimulacie(vystup);
                zastaveniePokracovanieSimulacie.Text = "Zastavenie Simulácie.";
                HodnotyStavuZobrazovaniaSimulacie.NastavZobrazovanieSimulacie(false);
                zastavenieSpustenieZobrazovaniaButton.Text = "Zastavenie zobrazovania";
            }
            else
            {
                MessageBox.Show("Nema zmysel ukoncovat simulaciu");
            }
        }
        //spustenie vykreslovania
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            TabPage tabPage = Simulacia.TabPages[1];

            StatickeHodnoty.NastavMravenisko(StatickeHodnoty.ZistiBehSimulacieSimulacia().ZistiMravenisko());

            if (HodnotyStavuZobrazovaniaSimulacie.ZistiZobrazovanieSimulacie())
            {
                GrafickyVystup.VykresliMraveniskoUvod(StatickeHodnoty.ZistiMravenisko(), tabPage);
                VypisFazeMraveniska.VypisFazeMraveniskaUvod(StatickeHodnoty.ZistiMravenisko(), casLabelVystup, fazaLabelVystup);
            }


            if (StatickeHodnoty.ZistiMravenisko().ZistiPocetVsetkychMravcov() == 0 &&
                StatickeHodnoty.ZistiMravenisko().ZistiFazaMraveniska() == FazaMraveniska.poKonciKroku)
            {
                InicializaciaNastaveniHodnot();
                HodnotyStavuSimulacie.NastavBolaUkoncena(pocetMravcovTypu1Nastavenia, pocetMravcovTypu2Nastavenia,
                                                         pocetMravcovTypu3Nastavenia, pocetMravcovTypu4Nastavenia,
                                                         pocetSkalNastavenia, mnozstvoZaciatocnejPotravyNastavenia,
                                                         minimalneMnozstvoPotravyNastavenia, casLabelVystup, fazaLabelVystup);
                HodnotyNaVypisovanie.VypisUdajeZakladne(dobaSimulacia, pocetMravcovTypu1TerazSimulacia, pocetMravcovTypu1CelkovoSimulacia,
                                                        pocetMravcovTypu2TerazSimulacia, pocetMravcovTypu2CelkovoSimulacia,
                                                        pocetMravcovTypu3TerazSimulacia, pocetMravcovTypu3CelkovoSimulacia,
                                                        pocetMravcovTypu4TerazSimulacia, pocetMravcovTypu4CelkovoSimulacia,
                                                        mnoztvoPotravyTerazSimulacia, mnozstvoPotravyCelkovoSimulacia);

                GrafickyVystup.VykresliOknoBezSimulacie(tabPage);
                HodnotyStavuZobrazovaniaSimulacie.NastavZobrazovanieSimulacie(true);
                zastavenieSpustenieZobrazovaniaButton.Text = "Zastavenie zobrazovania";
            }

            StatickeHodnoty.ZistiAutoResetEvent().Set();
        }
Exemple #3
0
        //spravuje ukoncenie simulacie a inicializaciu cast hodnot pre pripadne dalsie spustenie simulacie
        //zvysok sa inicializuje v casti InicializaciaNastaveni
        public static void SimulaciaBolaUkoncena(NumericUpDown pocetMravcovTypu1, NumericUpDown pocetMravcovTypu2,
                                                 NumericUpDown pocetMravcovTypu3, NumericUpDown poceMravcovTypu4,
                                                 NumericUpDown pocetSkal, NumericUpDown mnozstvoPotravyZaciatocnej,
                                                 NumericUpDown mnozstvoPotravyMinnimalnej, Label labelCas, Label labelFaza)
        {
            StatickeHodnoty.ZistiBehSimulacieSimulacia().UkonecieSimulacie();

            if (Konstanty.jeNastaveneMiestoUlozenia)
            {
                Konstanty.zapisovacUdajov.Close();
            }

            NastaveneHodnotyPocasKrokov.NastavPokracovanie(false);
            NacitaneHodnoty.NastavNastavenia(false);
            HodnotyStavuSimulacie.ResetujMiestoUlozenia();
            HodnotyStavuZobrazovaniaSimulacie.NastavZobrazovanieSimulacie(false);
            StatickeHodnoty.ZistiBehSimulacieSimulacia().InicializujSimulaciu("");



            NacitaneHodnoty.InicializujPoctyHodnotMravcov(pocetMravcovTypu1, pocetMravcovTypu2, pocetMravcovTypu3,
                                                          poceMravcovTypu4);
            NacitaneHodnoty.InicializujHodnoty(pocetSkal, mnozstvoPotravyZaciatocnej, mnozstvoPotravyMinnimalnej);

            VypisFazeMraveniska.NastavZakladneHodnoty(labelCas, labelFaza);
        }
 //nastavenie rychlosti simulacie
 private void nastavenieRychlostiNum_ValueChanged(object sender, EventArgs e)
 {
     if (HodnotyStavuSimulacie.ZistiBolaSpustena())
     {
         MessageBox.Show("Simulacia uz je spustena, nie je mozne menit jej rychlost.");
     }
     else
     {
         HodnotyStavuSimulacie.NastavRychlostSimulacie((int)nastavenieRychlostiNum.Value);
     }
 }
 //reakcia na spustenie simulacie
 private void spustenieSimulacie_Click(object sender, EventArgs e)
 {
     if (!HodnotyStavuSimulacie.ZistiBolaSpustena())
     {
         HodnotyStavuSimulacie.NastavBolasSpustena();
     }
     else
     {
         MessageBox.Show("Simulacia uz je spustena.");
     }
 }
Exemple #6
0
        //spravuje spustenie simulacie
        public static void SimulaciaBolaSpustena()
        {
            NastavHodnotySimulacie();

            HodnotyStavuZobrazovaniaSimulacie.NastavZobrazovanieSimulacie(true);

            StatickeHodnoty.NastavBehSimulacieSimulacia(new BehSimulacie());
            StatickeHodnoty.ZistiBehSimulacieSimulacia().InicializujSimulaciu(HodnotyStavuSimulacie.ZistiMiestoUlozenia());

            VykreslovanieASpustenieBehuSimulacie();
        }
 //ulozi miesta, kam sa má výpis simulácie ulozit
 private void ukladanieSimulacie_Click(object sender, EventArgs e)
 {
     if (HodnotyStavuSimulacie.ZistiBolaSpustena() == false)
     {
         if (saveFileDialog1.ShowDialog() == DialogResult.OK)
         {
             HodnotyStavuSimulacie.NastavMiestoUlozenie(saveFileDialog1.FileName);
         }
         else
         {
             MessageBox.Show("Simulácia už prebieha, teda nie je možné vybrať miesto uloženie zápisu behu simulácie.");
         }
     }
 }
Exemple #8
0
        //nastavi prvotne hodnoty simulacie
        private static void NastavHodnotySimulacie()
        {
            ZadaneHodnoty.NastavPocetMravcovTypu1(NacitaneHodnoty.ZistiPocetMravcovTypu1());
            ZadaneHodnoty.NastavPocetMravcovTypu2(NacitaneHodnoty.ZistiPocetMravcovTypu2());
            ZadaneHodnoty.NastavPocetMravcovTypu3(NacitaneHodnoty.ZistiPocetMravcovTypu3());
            ZadaneHodnoty.NastavPocetMravcovTypu4(NacitaneHodnoty.ZistiPocetMravcovTypu4());
            ZadaneHodnoty.NastavMinimalneMnozstvoPotravy(NacitaneHodnoty.ZistiMnozstvoMinimalnejPotravy());
            ZadaneHodnoty.NastavMnozstvoPotravy(NacitaneHodnoty.ZistiMnozstvoStartovnejPotavy());
            ZadaneHodnoty.NastavPocetSkal(NacitaneHodnoty.ZistiPocetSkal());
            ZadaneHodnoty.NastavRozmerMraveniska(NacitaneHodnoty.ZistiRozmerMraveniska());

            Konstanty.NastavNasobokDobyPrestavky(HodnotyStavuSimulacie.ZistiRychlostSimulacie());

            GrafickyVystup.Inicializacia(ZadaneHodnoty.ZistiRozmerMraveniska());
        }
        //inicializuje pole "ListBox-ov", ktore reprezentuje nastavenie konania mravcov v danej situacii
        private void InicializujListBoxs()
        {
            ListBox[,] listBoxes = new ListBox[, ] {
                { prazdnaPrazdnaStrategia, prazdnaSkalaStrategia, prazdnaPotravaStrategia,
                  prazdnaVpreduPriatelPrazdnaStrategia, prazdnaVpreduPriatelPotravaStrategia,
                  prazdnaVpreduNepriatelPrazdnaStrategia, prazdnaVpreduNepriatelPotravaStrategia },
                { potraPrazdnaStrategia, potravaSkalaStrategia, potravaPotravaStrategia,
                  potravaVpreduPriatelPrazdnaStrategia, potravaVpreduPriatelPotravaStrategia,
                  potravaVpreduNepriatelPrazdnaStrategia, prazdnaVpreduNepriatelPotravaStrategia },
                { priatelPrazdnaPrazdnaStrategia, priatelPrazdnaSkalaStrategia, priatelPrazdnaPotravaStrategia,
                  priatelPrazdnaVpreduPriatelPrazdnaStrategia, priatelPrazdnaVpreduPriatelPotravaStrategia,
                  priatelPrazdnaVpreduNepriatelPrazdnaStrategia, priatelPrazdnaVpreduNepriatelPotravaStrategia },
                { priatelPotravaPrazdnaStrategia, priatelPotravaSkalaStrategia, priatelPotravaPotravaStrategia,
                  priatelPotravaVpreduPriatelPrazdnaStrategia, priatelPotravaVpreduPriatelPotravaStrategia,
                  priatelPotravaVpreduNepriatelPrazdnaStrategia, priatelPotravaVpreduNepriatelPotravaStrategia }
            };

            HodnotyStavuSimulacie.NastavKonanie(listBoxes);
        }
Exemple #10
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");
            }
        }
 //zastavi zobrazovanie simulacie, simulacia ale pobezi nadalej
 private void zastavenieSpustenieZobrazovania_Click(object sender, EventArgs e)
 {
     if (HodnotyStavuSimulacie.ZistiBolaSpustena())
     {
         if (HodnotyStavuZobrazovaniaSimulacie.ZistiZobrazovanieSimulacie() == true)
         {
             HodnotyStavuZobrazovaniaSimulacie.NastavZobrazovanieSimulacie(false);
             zastavenieSpustenieZobrazovaniaButton.Text = "Spustenie zobrazovania";
         }
         else
         {
             HodnotyStavuZobrazovaniaSimulacie.NastavZobrazovanieSimulacie(true);
             zastavenieSpustenieZobrazovaniaButton.Text = "Zastavenie zobrazovania";
         }
     }
     else
     {
         MessageBox.Show("Nema zmysel.");
     }
 }
 //reakcia na zastavenie, resp. pokracovanie, simulacie
 private void zastaveniePokracovanieSimulacie_Click(object sender, EventArgs e)
 {
     if (HodnotyStavuSimulacie.ZistiBolaSpustena())
     {
         if (!HodnotyStavuSimulacie.ZistiBolaZastavena())
         {
             HodnotyStavuSimulacie.NastavBolaZastavenaPokracuje(true);
             zastaveniePokracovanieSimulacie.Text = "Pokracovanie simulacie";
         }
         else
         {
             HodnotyStavuSimulacie.NastavBolaZastavenaPokracuje(false);
             zastaveniePokracovanieSimulacie.Text = "Zastavenie simulacie";
         }
     }
     else
     {
         MessageBox.Show("Nema zmysel.");
     }
 }
Exemple #13
0
        //spravuje vypisovanie udajov v casti Simulacia
        public static void VypisUdaje(Label dobaBehu, Label pocetMravcovTypu1, Label pocetMravcovTypu1Celkovo,
                                      Label pocetMravcovTypu2, Label pocetMravcovTypu2Celkovo,
                                      Label pocetMravcovTypu3, Label pocetMravcovTypu3Celkovo,
                                      Label pocetMravcovTypu4, Label pocetMravcovTypu4Celkovo,
                                      Label mnozsvtoPotrava, Label pocetPotravyCelkovo)
        {
            VypisovacieUdaje vypisovacieUdaje = default(VypisovacieUdaje);

            if (HodnotyStavuSimulacie.ZistiBolaSpustena())
            {
                vypisovacieUdaje = StatickeHodnoty.ZistiBehSimulacieSimulacia().ZistiUdaje();
                HodnotyNaVypisovanie.NacitajUdaje(vypisovacieUdaje);
                HodnotyNaVypisovanie.VypisUdaje(dobaBehu, pocetMravcovTypu1, pocetMravcovTypu1Celkovo,
                                                pocetMravcovTypu2, pocetMravcovTypu2Celkovo, pocetMravcovTypu3,
                                                pocetMravcovTypu3Celkovo, pocetMravcovTypu4, pocetMravcovTypu4Celkovo,
                                                mnozsvtoPotrava, pocetPotravyCelkovo);
            }
            else
            {
                MessageBox.Show("Musíte najpr spustiť simuláciu pre vypysovanie údajov.");
            }
        }
        //spustenie vypoctu simulacie pomocou backgroundworker
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            int dlzkaSpanku;

            while (HodnotyStavuSimulacie.ZistiBolaSpustena() && !HodnotyStavuSimulacie.ZistiBolaZastavena())
            {
                dlzkaSpanku = 0;

                StatickeHodnoty.ZistiBehSimulacieSimulacia().SpustiSimulaciu();
                if (StatickeHodnoty.ZistiBehSimulacieSimulacia().ZistiDobaBehu() == 0)
                {
                    Thread.Sleep(2000);
                }
                backgroundWorker1.ReportProgress(1);
                StatickeHodnoty.ZistiAutoResetEvent().WaitOne();

                while (dlzkaSpanku < Konstanty.ZistiVyslednuDobuPrestavku() &&
                       HodnotyStavuSimulacie.ZistiBolaSpustena() && !HodnotyStavuSimulacie.ZistiBolaZastavena())
                {
                    Thread.Sleep(1);
                    dlzkaSpanku++;
                }
            }
        }