private void button1_Click(object sender, EventArgs e) { int wymiar = (Int32)wymiaryNumeric.Value; labirynt = new Labirynt(wymiar); buttons = new Button[wymiar * wymiar]; int index = 0; for (int i = 0; i < wymiar; i++) { for (int j = 0; j < wymiar; j++) { Button b = new Button(); Button b2 = new Button(); b.Size = new Size(30, 30); b.Location = new Point(i * 30, j * 30); b.Text = i + " " + j; b.Tag = labirynt.getWezel(i, j); b.BackColor = Color.White; b.Click += new EventHandler(buttonClick); buttons[index++] = b; } } buttons[0].BackColor = Color.Green; wezelPoczatkowy = labirynt.getWezel(0, 0); buttons[buttons.Length - 1].BackColor = Color.Red; wezelKoncowy = labirynt.getWezel(wymiar - 1, wymiar - 1); panel1.Controls.AddRange(buttons); }
public IDAStar(int startX, int startY, int koniecX, int koniecY, Labirynt labirynt, string wybranaHeurystyka, double kosztAkcji = 1.0, int opoznienie = 0) { this.opoznienie = opoznienie; this.kosztAkcji = kosztAkcji; heurystyka = new Heurystyka(); this.wybranaHeurystyka = wybranaHeurystyka; start = labirynt.getWezel(startX, startY); koniec = labirynt.getWezel(koniecX, koniecY); this.labirynt = labirynt; wezlyOdwiedzone = 0; iloscPowodzen = 0; iloscNiepowodzen = 0; lacznaDlugoscSciezki = 0; maxCzasWykonania = 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 = ""; }
public Labirynt kopiuj() { int wymiar = this.wymiar; Wezel[,] stareWezly = wezly; Labirynt nowyLabirynt = new Labirynt(wymiar); Wezel[,] noweWezly = new Wezel[wymiar, wymiar]; for (int i = 0; i < wymiar; ++i) { for (int j = 0; j < wymiar; ++j) { noweWezly[i, j] = new Wezel(j, i, stareWezly[i, j].odblokowane); } } nowyLabirynt.wezly = noweWezly; return(nowyLabirynt); }
public List <Wezel> szukajSciezki(int startX, int startY, int koniecX, int koniecY, Labirynt labirynt, int maxCzasWykonywania = 0) { maxCzasWykonania = maxCzasWykonywania; if (maxCzasWykonania != 0) { czasKoncowy = DateTime.Now.AddSeconds(maxCzasWykonywania); } double maxGlebokosc = obliczHeurystyke(start, koniec) * kosztAkcji; Object t; for (;;) { // przekroczono max czas wykonania - 30sek if (maxCzasWykonania != 0 && DateTime.Compare(DateTime.Now, czasKoncowy) > 0) { uplynalCzasWykonywania = true; return(new List <Wezel>()); } sciezka.Clear(); t = szukaj(start, 0, maxGlebokosc, 0); try // Double { double doub = (Double)t; if (Double.IsPositiveInfinity(doub)) { sciezka.Clear(); iloscNiepowodzen++; return(new List <Wezel>()); } else { double d = (Double)t; maxGlebokosc = d; } } catch (Exception e) // Wezel { try { Wezel x = (Wezel)t; iloscPowodzen++; return(sciezka); } catch (Exception exc) // nic z powyzszych { return(new List <Wezel>()); } } } }