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 = ""; }
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(); }