Example #1
0
 private void button1_Click_1(object sender, EventArgs e)
 {
     panel1.Controls.Clear();
     panel2.Controls.Clear();
     manhattanRadio.Checked = true;
     wymiaryNumeric.Value   = 5;
     wezelKoncowy           = null;
     labirynt                            = null;
     buttons                             = null;
     wybranyStart                        = true;
     wybranyKoniec                       = true;
     wezelPoczatkowy                     = null;
     wezlyWyszukane                      = null;
     ida                                 = null;
     timeTextBox.Text                    = "";
     powodzeniaTextBox.Text              = "";
     niepowodzeniaTextBox.Text           = "";
     sredniaDlugoscSciezkiTextBox.Text   = "";
     iloscRozwinietychWezlowTextBox.Text = "";
 }
Example #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (labirynt == null)
            {
                return;
            }

            Control.ControlCollection kontrolki = panel1.Controls;
            if (monitorujCheckBox.Checked)
            {
                panel2.Controls.Clear();
                foreach (Button b in kontrolki)
                {
                    Button button = new Button();
                    button.Tag       = b.Tag;
                    button.BackColor = b.BackColor;
                    button.Size      = b.Size;
                    button.Location  = b.Location;
                    button.Text      = b.Text;
                    panel2.Controls.Add(button);
                }
            }

            Thread watek = new Thread(() =>
            {
                sciezkaWyszukiwana = true;
                double kosztAkcji  = (Double)kosztAkcjiNumeric.Value;

                // z opoznieniem i sledzeniem zmian
                if (monitorujCheckBox.Checked)
                {
                    ida = new IDAStar(wezelPoczatkowy.x, wezelPoczatkowy.y, wezelKoncowy.x, wezelKoncowy.y, labirynt, sprawdzRadio(), kosztAkcji, (Int32)opoznienieNumeric.Value);
                }
                //bez
                else
                {
                    ida = new IDAStar(wezelPoczatkowy.x, wezelPoczatkowy.y, wezelKoncowy.x, wezelKoncowy.y, labirynt, sprawdzRadio(), kosztAkcji, 0);
                }

                ida.zglosZdarzenie += zdarzenieZmianyBadanejSciezki;

                timeTextBox.Text                    = "...";
                powodzeniaTextBox.Text              = "...";
                niepowodzeniaTextBox.Text           = "...";
                sredniaDlugoscSciezkiTextBox.Text   = "...";
                iloscRozwinietychWezlowTextBox.Text = "...";

                DateTime data1, data2;

                if (maxCzasWykonaniaCheckBox.Checked)
                {
                    int maxCzasWykonania = (Int32)maxCzasNumeric.Value;
                    data1          = DateTime.Now;
                    wezlyWyszukane = ida.szukajSciezki(wezelPoczatkowy.x, wezelPoczatkowy.y, wezelKoncowy.x, wezelKoncowy.y, labirynt, maxCzasWykonania);
                    data2          = DateTime.Now;
                }
                else
                {
                    data1          = DateTime.Now;
                    wezlyWyszukane = ida.szukajSciezki(wezelPoczatkowy.x, wezelPoczatkowy.y, wezelKoncowy.x, wezelKoncowy.y, labirynt);
                    data2          = DateTime.Now;
                }

                if (wezlyWyszukane.Count == 0)
                {
                    if (ida.uplynalCzasWykonywania)
                    {
                        timeTextBox.Text                    = ida.maxCzasWykonania + "s minęło";
                        powodzeniaTextBox.Text              = ida.maxCzasWykonania + "s minęło";
                        niepowodzeniaTextBox.Text           = ida.maxCzasWykonania + "s minęło";
                        sredniaDlugoscSciezkiTextBox.Text   = ida.maxCzasWykonania + "s minęło";
                        iloscRozwinietychWezlowTextBox.Text = ida.maxCzasWykonania + "s minęło";
                    }
                    else
                    {
                        timeTextBox.Text                    = "-";
                        powodzeniaTextBox.Text              = "-";
                        niepowodzeniaTextBox.Text           = "-";
                        sredniaDlugoscSciezkiTextBox.Text   = "-";
                        iloscRozwinietychWezlowTextBox.Text = "-";
                    }
                }
                else
                {
                    wezlyWyszukane.RemoveAt(0);
                    wezlyWyszukane.RemoveAt(0);

                    foreach (Wezel w in wezlyWyszukane)
                    {
                        foreach (Control kontrolka in kontrolki)
                        {
                            Wezel wezelKontrolka = (Wezel)kontrolka.Tag;
                            if (wezelKontrolka.x.Equals(w.x) && wezelKontrolka.y.Equals(w.y))
                            {
                                kontrolka.BackColor = Color.Yellow;
                            }
                        }
                    }

                    timeTextBox.Text                    = Math.Ceiling((data2 - data1).TotalMilliseconds).ToString();
                    powodzeniaTextBox.Text              = ida.iloscPowodzen.ToString();
                    niepowodzeniaTextBox.Text           = ida.iloscNiepowodzen.ToString();
                    sredniaDlugoscSciezkiTextBox.Text   = ((Double)ida.lacznaDlugoscSciezki / (ida.iloscNiepowodzen + ida.iloscPowodzen)).ToString();
                    iloscRozwinietychWezlowTextBox.Text = ida.wezlyOdwiedzone.ToString();
                    sciezkaWyszukiwana                  = false;
                }
            });

            watek.Start();
        }