Пример #1
0
        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);
        }
Пример #2
0
 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;
 }
Пример #3
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 = "";
 }
Пример #4
0
        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);
        }
Пример #5
0
        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>());
                    }
                }
            }
        }