예제 #1
0
        private void ruchKomputera2()
        {
            if (aktualna_liczba_owieczek < 6)
            {
                drzewo.ilePoziomow = 4;
            }
            else if (aktualna_liczba_owieczek >= 6 && aktualna_liczba_owieczek < 12)
            {
                drzewo.ilePoziomow = 5;
            }
            else if (aktualna_liczba_owieczek >= 12 && aktualna_liczba_owieczek <= 18)
            {
                drzewo.ilePoziomow = 6;
            }
            // plansza.pokazStanPlanszy();
            drzewo.plansza_poczatkowa.uaktualnijStanPlanszy(plansza.stan);
            drzewo.utworzDrzewoPo18();

            int  wartoscAlfaBeta = drzewo.alfaBeta(drzewo.root, 10, -10);
            Ruch r = drzewo.zwrocRuchKomputera(wartoscAlfaBeta);

            if (r.bicie == true)
            {
                aktualna_liczba_owieczek--;
            }
            operacje.wykonajRuchIZmienStanPlanszy(1, r, plansza.stan);


            uaktualnijWizualizacjePlanszyTygrysow(r);
            //Console.WriteLine("//////////////////////////");
            //plansza.pokazStanPlanszy();

            tura_gracza = true;
        }
예제 #2
0
        private void uaktualnijWizualizacjePlanszyOwiec(Ruch ruch)
        {
            Button szukany = (Button)FindName("btn" + ruch.skad.x + ruch.skad.y);

            szukany.Style = FindResource("emptyField") as Style;
            szukany       = (Button)FindName("btn" + ruch.dokad.x + ruch.dokad.y);
            szukany.Style = FindResource("sheep") as Style;
        }
예제 #3
0
        private void ruchGracza(Button piece)
        {
            //debugBox.Text = "zacznij";


            if (pierwszyKlik == false)
            {
                //debugBox.Text = "zacznij1";
                a = Convert.ToInt32(Char.GetNumericValue(piece.Name[3]));
                b = Convert.ToInt32(Char.GetNumericValue(piece.Name[4]));
                if (plansza.stan[a, b] == 2)
                {
                    pierwszyKlik = true;
                    //zakreslona owieczka grafika
                    //piece.Style = FindResource("sheepPointed") as Style;
                }
                return;
            }
            if (pierwszyKlik == true)
            {
                plansza.uaktualnijTempPlanszy(plansza.stan);
                operacje.generujMozliweRuchyOwiec(2, this.plansza);
                // debugBox.Text = "zacznij2";
                int x1 = Convert.ToInt32(Char.GetNumericValue(piece.Name[3]));
                int y1 = Convert.ToInt32(Char.GetNumericValue(piece.Name[4]));
                if (a != x1 || b != y1)
                {
                    Ruch r = new Ruch();
                    r.skad.x  = a;
                    r.skad.y  = b;
                    r.dokad.x = x1;
                    r.dokad.y = y1;
                    if (ruchJestMozliwy(r))
                    {
                        uaktualnijWizualizacjePlanszyOwiec(r);
                        plansza.stan[a, b]   = 0;
                        plansza.stan[x1, y1] = 2;
                        //plansza.pokazStanPlanszy();
                        pierwszyKlik = false;
                        tura_gracza  = false;
                        ruchKomputera2();
                    }
                    else
                    {
//debugBox.Text = "zly ruch!";
                        pierwszyKlik = false;
                    }
                }
                else
                {
                    //normalna owieczka grafika
                    piece.Style = FindResource("sheep") as Style;
                    //debugBox.Text = "wybierz pionek";
                    pierwszyKlik = false;
                }
            }
            sprawdzWygrana();
        }
예제 #4
0
 public void wykonajRuchIZmienStanPlanszy(int zawodnik, Ruch ruch, int[,] plansza)
 {
     if (ruch.bicie)// jeżeli jest to bicie to w miejscu zbijanego pionka wpisujemy 0
     {
         plansza[ruch.bityPionek.x, ruch.bityPionek.y] = 0;
     }
     plansza[ruch.skad.x, ruch.skad.y]   = 0;
     plansza[ruch.dokad.x, ruch.dokad.y] = zawodnik;
 }
예제 #5
0
 public Wezel(Plansza pl, Operacje operacje, Ruch r)
 {
     refkaParenta   = new Wezel();
     ruch           = new Ruch();
     ruch           = r;
     plansza        = new Plansza();
     lista_potomkow = new List <Wezel>();
     //ocena = suma;
     plansza.uaktualnijStanPlanszy(pl.stan);
 }
예제 #6
0
 private bool ruchJestMozliwy(Ruch ruch)
 {
     foreach (Ruch r in operacje.ListaRuchow)
     {
         if (r.skad.x == ruch.skad.x && r.skad.y == ruch.skad.y && r.dokad.x == ruch.dokad.x && r.dokad.y == ruch.dokad.y)
         {
             return(true);
         }
     }
     return(false);
 }
예제 #7
0
        public void dodajWezel(Ruch ruch, bool Min, bool Max, int zawodnik, Operacje operacje, Wezel parent)
        {
            min = Min;
            max = Max;
            Plansza temp = new Plansza();

            temp.uaktualnijStanPlanszy(plansza.stan);
            operacje.wykonajRuchIZmienStanPlanszy(zawodnik, ruch, temp.stan);
            //int nowaOcena = this.ocena + wartosc;
            refkaParenta = parent;
            lista_potomkow.Add(new Wezel(temp, operacje, 0, ruch, parent));
        }
예제 #8
0
        private void ruchKomputera()
        {
            if (aktualna_liczba_owieczek < 6)
            {
                drzewo.ilePoziomow = 4;
            }
            else if (aktualna_liczba_owieczek >= 6 && aktualna_liczba_owieczek < 12)
            {
                drzewo.ilePoziomow = 8;
            }
            else if (aktualna_liczba_owieczek >= 12 && aktualna_liczba_owieczek <= 18)
            {
                drzewo.ilePoziomow = 10;
            }
            //plansza.pokazStanPlanszy();
            drzewo.plansza_poczatkowa.uaktualnijStanPlanszy(plansza.stan);
            drzewo.utworzDrzewo();

            int  wartoscAlfaBeta = drzewo.alfaBeta(drzewo.root, 10, -10);
            Ruch r = drzewo.zwrocRuchKomputera(wartoscAlfaBeta);

            if (r != null)
            {
                if (r.bicie == true)
                {
                    InsultBox.Source = new BitmapImage(new Uri("pack://application:,,,/resources/insult (" + rand.Next(1, 8) + ").jpg"));
                    //debugBox.Text = insults[rand.Next(1, 10)];
                    aktualna_liczba_owieczek--;
                }
                else
                {
                    InsultBox.Source = new BitmapImage(new Uri("pack://application:,,,/resources/hmm.jpg"));
                    //debugBox.Text = remarks[rand.Next(1, 10)];
                }

                operacje.wykonajRuchIZmienStanPlanszy(1, r, plansza.stan);
                uaktualnijWizualizacjePlanszyTygrysow(r);
                //Console.WriteLine("//////////////////////////");
                //plansza.pokazStanPlanszy();
                tura_gracza = true;
            }
            else
            {
                sprawdzWygrana();
            }
        }
예제 #9
0
        private void uaktualnijWizualizacjePlanszyTygrysow(Ruch ruch)
        {
            Button szukany = (Button)FindName("btn" + ruch.skad.x + ruch.skad.y);

            szukany.Style = FindResource("emptyField") as Style;
            if (ruch.bicie == false)
            {
                szukany       = (Button)FindName("btn" + ruch.dokad.x + ruch.dokad.y);
                szukany.Style = FindResource("tiger") as Style;
            }
            else
            {
                szukany       = (Button)FindName("btn" + ruch.bityPionek.x + ruch.bityPionek.y);
                szukany.Style = FindResource("emptyField") as Style;

                szukany       = (Button)FindName("btn" + ruch.dokad.x + ruch.dokad.y);
                szukany.Style = FindResource("tiger") as Style;
            }
        }
예제 #10
0
 public void generujBiciaWilkow(int Zawodnik, Plansza pl)
 {
     for (int i = 0; i < 9; i = i + 2)
     {
         for (int j = 0; j < 9; j = j + 2)
         {
             if (pl.temp[i, j] == 0)
             {
                 if (i + 4 <= 8)
                 {
                     if (pl.temp[i + 4, j] == Zawodnik && pl.temp[i + 2, j] != Zawodnik && pl.temp[i + 2, j] != 0 && pl.temp[i + 3, j] == 4 && pl.temp[i + 1, j] == 4)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i + 2;
                         ri.bityPionek.y = j;
                         ri.skad.x       = i + 4; ri.skad.y = j;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                         //PrzypiszRuch_ZmienStanPlanszy(Zawodnik, i, j, pl, 4, 0);
                     }
                 }
                 if (i + 4 <= 8 && j + 4 <= 8)
                 {
                     if (pl.temp[i + 4, j + 4] == Zawodnik && pl.temp[i + 2, j + 2] != Zawodnik && pl.temp[i + 2, j + 2] != 0 && pl.temp[i + 3, j + 3] == 6 && pl.temp[i + 1, j + 1] == 6)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i + 2;
                         ri.bityPionek.y = j + 2;
                         ri.skad.x       = i + 4; ri.skad.y = j + 4;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
                 if (j + 4 <= 8)
                 {
                     if (pl.temp[i, j + 4] == Zawodnik && pl.temp[i, j + 2] != Zawodnik && pl.temp[i, j + 2] != 0 && pl.temp[i, j + 3] == 3 && pl.temp[i, j + 1] == 3)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i;
                         ri.bityPionek.y = j + 2;
                         ri.skad.x       = i; ri.skad.y = j + 4;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
                 if (i - 4 >= 0 && j + 4 <= 8)
                 {
                     if (pl.temp[i - 4, j + 4] == Zawodnik && pl.temp[i - 2, j + 2] != Zawodnik && pl.temp[i - 2, j + 2] != 0 && pl.temp[i - 3, j + 3] == 5 && pl.temp[i - 1, j + 1] == 5)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i - 2;
                         ri.bityPionek.y = j + 2;
                         ri.skad.x       = i - 4; ri.skad.y = j + 4;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
                 if (i - 4 >= 0)
                 {
                     if (pl.temp[i - 4, j] == Zawodnik && pl.temp[i - 2, j] != Zawodnik && pl.temp[i - 2, j] != 0 && pl.temp[i - 3, j] == 4 && pl.temp[i - 1, j] == 4)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i - 2;
                         ri.bityPionek.y = j;
                         ri.skad.x       = i - 4; ri.skad.y = j;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
                 if (i - 4 >= 0 && j - 4 >= 0)
                 {
                     if (pl.temp[i - 4, j - 4] == Zawodnik && pl.temp[i - 2, j - 2] != Zawodnik && pl.temp[i - 2, j - 2] != 0 && pl.temp[i - 3, j - 3] == 6 && pl.temp[i - 1, j - 1] == 6)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i - 2;
                         ri.bityPionek.y = j - 2;
                         ri.skad.x       = i - 4; ri.skad.y = j - 4;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
                 if (j - 4 >= 0)
                 {
                     if (pl.temp[i, j - 4] == Zawodnik && pl.temp[i, j - 2] != Zawodnik && pl.temp[i, j - 2] != 0 && pl.temp[i, j - 3] == 3 && pl.temp[i, j - 1] == 3)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i;
                         ri.bityPionek.y = j - 2;
                         ri.skad.x       = i; ri.skad.y = j - 4;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
                 if (i + 4 <= 8 && j - 4 >= 0)
                 {
                     if (pl.temp[i + 4, j - 4] == Zawodnik && pl.temp[i + 2, j - 2] != Zawodnik && pl.temp[i + 2, j - 2] != 0 && pl.temp[i + 3, j - 3] == 5 && pl.temp[i + 1, j - 1] == 5)
                     {
                         Ruch ri = new Ruch();
                         ri.bicie        = true;
                         ri.bityPionek.x = i + 2;
                         ri.bityPionek.y = j - 2;
                         ri.skad.x       = i + 4; ri.skad.y = j - 4;
                         ri.dokad.x      = i; ri.dokad.y = j;
                         ListaBic.Add(ri);
                     }
                 }
             }
         }
     }
     //Console.WriteLine(LBic.Count);
 }
예제 #11
0
 public List <Ruch> ListaBic    = new List <Ruch>(); //Lista zawierająca listę możliwych do wykonania bić przez wilka w danym czasie
 public void generujMozliweRuchyOwiec(int Zawodnik, Plansza pl)
 {
     for (int i = 0; i < 9; i = i + 2)
     {
         for (int j = 0; j < 9; j = j + 2)
         {
             if (pl.temp[i, j] == 0)
             {
                 if (i - 2 >= 0)
                 {
                     if (pl.temp[i - 2, j] == Zawodnik && pl.temp[i - 1, j] == 4)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i - 2; r.skad.y = j;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (i - 2 >= 0 && j + 2 <= 8)
                 {
                     if (pl.temp[i - 2, j + 2] == Zawodnik && pl.temp[i - 1, j + 1] == 5)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i - 2; r.skad.y = j + 2;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (j + 2 <= 8)
                 {
                     if (pl.temp[i, j + 2] == Zawodnik && pl.temp[i, j + 1] == 3)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i; r.skad.y = j + 2;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (j + 2 <= 8 && i + 2 <= 8)
                 {
                     if (pl.temp[i + 2, j + 2] == Zawodnik && pl.temp[i + 1, j + 1] == 6)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i + 2; r.skad.y = j + 2;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (i + 2 <= 8)
                 {
                     if (pl.temp[i + 2, j] == Zawodnik && pl.temp[i + 1, j] == 4)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i + 2; r.skad.y = j;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (j - 2 >= 0 && i + 2 <= 8)
                 {
                     if (pl.temp[i + 2, j - 2] == Zawodnik && pl.temp[i + 1, j - 1] == 5)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i + 2; r.skad.y = j - 2;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (j - 2 >= 0)
                 {
                     if (pl.temp[i, j - 2] == Zawodnik && pl.temp[i, j - 1] == 3)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i; r.skad.y = j - 2;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
                 if (j - 2 >= 0 && i - 2 >= 0)
                 {
                     if (pl.temp[i - 2, j - 2] == Zawodnik && pl.temp[i - 1, j - 1] == 6)
                     {
                         Ruch r = new Ruch();
                         r.skad.x  = i - 2; r.skad.y = j - 2;
                         r.dokad.x = i; r.dokad.y = j;
                         ListaRuchow.Add(r);
                     }
                 }
             }
         }
     }
 }
예제 #12
0
        public void generujMozliweRuchyWilkow(int Zawodnik, Plansza pl)
        {
            for (int i = 0; i < 9; i = i + 2)
            {
                for (int j = 0; j < 9; j = j + 2)
                {
                    if (pl.temp[i, j] == 0)
                    {
                        //przejscie gora
                        if (i + 2 <= 8)
                        {
                            if (pl.temp[i + 2, j] == Zawodnik && pl.temp[i + 1, j] == 4)
                            {
                                int a = i;
                                while (a >= 0)
                                {
                                    if (pl.temp[a, j] == 0 && pl.temp[a + 1, j] == 4)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i + 2; ri.skad.y = j;
                                        ri.dokad.x = a; ri.dokad.y = j;
                                        ListaRuchow.Add(ri);
                                        a -= 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                        //przejscie dol
                        if (i - 2 >= 0)
                        {
                            if (pl.temp[i - 2, j] == Zawodnik && pl.temp[i - 1, j] == 4)
                            {
                                int a = i;
                                while (a <= 8)
                                {
                                    if (pl.temp[a, j] == 0 && pl.temp[a - 1, j] == 4)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i - 2; ri.skad.y = j;
                                        ri.dokad.x = a; ri.dokad.y = j;
                                        ListaRuchow.Add(ri);
                                        a += 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }

                        //przejscie lewo
                        if (j + 2 <= 8)
                        {
                            if (pl.temp[i, j + 2] == Zawodnik && pl.temp[i, j + 1] == 3)
                            {
                                int a = j;
                                while (a >= 0)
                                {
                                    if (pl.temp[i, a] == 0 && pl.temp[i, a + 1] == 3)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i; ri.skad.y = j + 2;
                                        ri.dokad.x = i; ri.dokad.y = a;
                                        ListaRuchow.Add(ri);
                                        a -= 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                        //przejscie prawo
                        if (j - 2 >= 0)
                        {
                            if (pl.temp[i, j - 2] == Zawodnik && pl.temp[i, j - 1] == 3)
                            {
                                int a = j;
                                while (a <= 8)
                                {
                                    if (pl.temp[i, a] == 0 && pl.temp[i, a - 1] == 3)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i; ri.skad.y = j - 2;
                                        ri.dokad.x = i; ri.dokad.y = a;
                                        ListaRuchow.Add(ri);
                                        a += 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                        //przejscie lewo gora
                        if (j + 2 <= 8 && i + 2 <= 8)
                        {
                            if (pl.temp[i + 2, j + 2] == Zawodnik && pl.temp[i + 1, j + 1] == 6)
                            {
                                int a = i;
                                int b = j;
                                while (a >= 0 && b >= 0)
                                {
                                    if (pl.temp[a, b] == 0 && pl.temp[a + 1, b + 1] == 6)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i + 2; ri.skad.y = j + 2;
                                        ri.dokad.x = a; ri.dokad.y = b;
                                        ListaRuchow.Add(ri);
                                        a -= 2;
                                        b -= 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                        //przejscie dol-lewo
                        if (i - 2 >= 0 && j + 2 <= 8)
                        {
                            if (pl.temp[i - 2, j + 2] == Zawodnik && pl.temp[i - 1, j + 1] == 5)
                            {
                                int a = i;
                                int b = j;
                                while (a <= 8 && b >= 0)
                                {
                                    if (pl.temp[a, b] == 0 && pl.temp[a - 1, b + 1] == 5)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i - 2; ri.skad.y = j + 2;
                                        ri.dokad.x = a; ri.dokad.y = b;
                                        ListaRuchow.Add(ri);
                                        a += 2;
                                        b -= 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                        //przejscie prawo gora
                        if (j - 2 >= 0 && i + 2 <= 8)
                        {
                            if (pl.temp[i + 2, j - 2] == Zawodnik && pl.temp[i + 1, j - 1] == 5)
                            {
                                int a = i;
                                int b = j;
                                while (a >= 0 && b <= 8)
                                {
                                    if (pl.temp[a, b] == 0 && pl.temp[a + 1, b - 1] == 5)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i + 2; ri.skad.y = j - 2;
                                        ri.dokad.x = a; ri.dokad.y = b;
                                        ListaRuchow.Add(ri);
                                        a -= 2;
                                        b += 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }

                        //przejscie prawo dol
                        if (j - 2 >= 0 && i - 2 >= 0)
                        {
                            if (pl.temp[i - 2, j - 2] == Zawodnik && pl.temp[i - 1, j - 1] == 6)
                            {
                                int a = i;
                                int b = j;
                                while (a <= 8 && b <= 8)
                                {
                                    if (pl.temp[a, b] == 0 && pl.temp[a - 1, b - 1] == 6)
                                    {
                                        Ruch ri = new Ruch();
                                        ri.skad.x  = i - 2; ri.skad.y = j - 2;
                                        ri.dokad.x = a; ri.dokad.y = b;
                                        ListaRuchow.Add(ri);
                                        a += 2;
                                        b += 2;
                                        // Console.WriteLine("dodatkowy");
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #13
0
        public void utworzDrzewo2(Wezel wezel, int poziom, int zawodnik, bool Min, bool Max)
        {
            operacje.ListaRuchow.Clear();
            operacje.ListaBic.Clear();

            int  przeciwnik = -1;
            bool Min2       = false;
            bool Max2       = true;

            if (zawodnik == 1)
            {
                przeciwnik = 2;
            }
            else if (zawodnik == 2)
            {
                przeciwnik = 1;
            }

            if (Min == false && Max == true && poziom != 0)
            {
                Min2 = true;
                Max2 = false;
            }
            else if (Min == true && Max == false && poziom != 0)
            {
                Min2 = false;
                Max2 = true;
            }

            if (poziom < ilePoziomow)
            {
                if (poziom == 0)
                {
                    operacje.generujBiciaWilkow(1, this.plansza_poczatkowa);
                    // dodajemy jako potomkow mozliwe bicia
                    for (int j = 0; j < operacje.ListaBic.Count; j++)
                    {
                        //Console.WriteLine("poziom "+poziom+" kulka: " + j + ": dodaje wezel bicia: [" + operacje.ListaBic[j].skad.x + "," + operacje.ListaBic[j].skad.y + "] -->" + "[" + operacje.ListaBic[j].dokad.x + "," + operacje.ListaBic[j].dokad.y + "]");
                        wezel.dodajWezel(operacje.ListaBic.ElementAt(j), false, true, zawodnik, operacje, 0);
                    }

                    if (operacje.ListaBic.Count == 0) //tylko jeśli nie ma bić to dodajemy jako potomkow mozliwe ruchy
                    {
                        operacje.generujMozliweRuchyWilkow(1, this.plansza_poczatkowa);
                        for (int j = 0; j < operacje.ListaRuchow.Count; j++)
                        {
                            //Console.WriteLine("poziom " + poziom+ " kulka: " + j + ": dodaje wezel ruchu: [" + operacje.ListaRuchow[j].skad.x + "," + operacje.ListaRuchow[j].skad.y + "] -->" + "["+ operacje.ListaRuchow[j].dokad.x + "," + operacje.ListaRuchow[j].dokad.y + "]");
                            root.dodajWezel(operacje.ListaRuchow.ElementAt(j), false, true, zawodnik, operacje, 0);
                        }
                    }
                    // wywolanie rekurencyjne dla potomkow
                    for (int i = 0; i < wezel.lista_potomkow.Count; i++)
                    {
                        utworzDrzewo2(wezel.lista_potomkow.ElementAt(i), poziom + 1, przeciwnik, true, false);
                    }
                }
                else
                {
                    operacje.ListaRuchow.Clear();
                    operacje.ListaBic.Clear();
                    //dla owiec
                    if (Min == true && Max == false)
                    {
                        //Console.WriteLine("poziom " + poziom + " pusty node na owiec");
                        Ruch r = new Ruch();
                        r.skad.x  = 1;
                        r.skad.y  = 0;
                        r.dokad.x = 1;
                        r.dokad.y = 0;
                        //wezel.plansza.pokazStanPlanszy();
                        wezel.dodajWezel(r, Min, Max, 2, operacje, 0);

                        for (int i = 0; i < wezel.lista_potomkow.Count; i++)
                        {
                            utworzDrzewo2(wezel.lista_potomkow.ElementAt(i), poziom + 1, przeciwnik, Min2, Max2);
                        }
                    }
                    //dla wilkow
                    if (Max == true && Min == false)
                    {
                        operacje.generujBiciaWilkow(zawodnik, wezel.plansza);

                        for (int j = 0; j < operacje.ListaBic.Count; j++)
                        {
                            //Console.WriteLine("poziom " + poziom + " kulka: " + j + ": dodaje wezel bicia: [" + operacje.ListaBic[j].skad.x + "," + operacje.ListaBic[j].skad.y + "] -->" + "[" + operacje.ListaBic[j].dokad.x + "," + operacje.ListaBic[j].dokad.y + "]");
                            wezel.dodajWezel(operacje.ListaBic.ElementAt(j), Min, Max, 1, operacje, 1);
                        }

                        if (operacje.ListaBic.Count == 0)//tylko jeśli nie ma bić to dodajemy jako potomkow mozliwe ruchy
                        {
                            operacje.generujMozliweRuchyWilkow(zawodnik, wezel.plansza);
                            for (int j = 0; j < operacje.ListaRuchow.Count; j++)
                            {
                                //Console.WriteLine("poziom " + poziom + " kulka: " + j + ": dodaje wezel ruchu: [" + operacje.ListaRuchow[j].skad.x + "," + operacje.ListaRuchow[j].skad.y + "] -->" + "[" + operacje.ListaRuchow[j].dokad.x + "," + operacje.ListaRuchow[j].dokad.y + "]");
                                wezel.dodajWezel(operacje.ListaRuchow.ElementAt(j), Min, Max, 1, operacje, 0);
                            }
                        }
                        for (int i = 0; i < wezel.lista_potomkow.Count; i++)
                        {
                            utworzDrzewo2(wezel.lista_potomkow.ElementAt(i), poziom + 1, przeciwnik, Min2, Max2);
                        }
                    }
                }
            }
        }