예제 #1
0
        int gracz, wrog;   //kto jest kim


        public Graf(Gra stan, int g)
        {
            W      = new List <Wierz>();
            K      = new List <Kraw>();
            liscie = new List <Wierz>();


            gracz = g;
            if (gracz == 0)
            {
                wrog = 1;
            }
            else
            {
                wrog = 0;
            }

            Wierz w = new Wierz();

            w.gra = stan;
            Wierz ww = new Wierz(w, gracz);

            W.Add(ww);



            BudujGraf(Warstw.warstw);

            Wierz najlepsze;
            bool  over = false;

            for (int prog = BETA_MAX; prog != ALFA_MIN - 1; prog--)
            {
                if (!over)
                {
                    foreach (Wierz wyn in liscie)
                    {
                        if (!over)
                        {
                            if (prog == wyn.waga)
                            {
                                najlepsze = wyn;

                                foreach (Kraw ruch in K)
                                {
                                    if (ruch.k == najlepsze && ruch.p == ww)
                                    {
                                        wynik = ruch;
                                        over  = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
        List <Wierz> RozwinWierz(Wierz w)         //robi dla w :-dzieci(zruchem) -dodaje do list
        {
            List <Wierz> lw = new List <Wierz>(); //nowe wierzcholki od ojca

            Pionek p = new Pionek(0);

            Wierz nowy_wierz = new Wierz(w, gracz);


            void p_cel(int y, int x)
            {
                p.w = y;
                p.r = x;
            }

            foreach (Pionek t in w.gra.pionki[w.gra.kolej])
            {
                if (t.aktywny)
                {
                    for (int y = 0; y < 8; y++)
                    {
                        for (int x = 0; x < 8; x++)
                        {
                            p_cel(y, x);

                            if (nowy_wierz.Zagraj(t, p))
                            {
                                Kraw nowa_kraw = new Kraw(w, nowy_wierz);
                                nowa_kraw.p1 = new Pionek(t);
                                nowa_kraw.p2 = new Pionek(p);

                                {
                                    lw.Add(nowy_wierz);
                                    W.Add(nowy_wierz);
                                    K.Add(nowa_kraw);
                                }
                                nowy_wierz = new Wierz(w, gracz);
                            }
                        }
                    }
                }
            }

            w.rozwiniety = true;



            //dodaje do lisci//czyli swierza nowa warstwa
            return(lw);
        }
예제 #3
0
        bool Dolacz(Wierz w, Kraw k)
        {
            foreach (Wierz w_w in W)
            {
                if (!w_w.Czy_Rozne(w))
                {
                    return(false);
                }
            }

            W.Add(w);
            K.Add(k);

            return(true);
        }