예제 #1
0
        /// <summary>
        /// Sprawdza które pola szachuje dany pionek (to różni się od pól, na które może się ruszyć)
        /// </summary>
        /// <param name="pole">Pole piona</param>
        /// <param name="pomocnicza_szachownica">Szachownica sprawdzana</param>
        /// <returns>Pola które szachuje sprawdzany pionek</returns>
        public List <int> zobacz_szachowane(int pole, Szachownica pomocnicza_szachownica)
        {
            var        kolumna_pionka = pole % 8;
            var        gdzie_patrzec  = bialy_gracz == 1 ? -1 : 1;
            List <int> zwrot          = new List <int>();

            if (kolumna_pionka != 7)
            {
                if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 + 1) is null)
                {
                    zwrot.Add(pole + gdzie_patrzec * 8 + 1);
                }
                else if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 + 1).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(pole + gdzie_patrzec * 8 + 1);
                }
            }

            if (kolumna_pionka != 0)
            {
                if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1) is null)
                {
                    zwrot.Add(pole + gdzie_patrzec * 8 - 1);
                }

                else if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(pole + gdzie_patrzec * 8 - 1);
                }
            }

            return(zwrot);
        }
예제 #2
0
        /// <summary>
        /// Funkcja pokazuje, na ktore pola moze ruszyc sie gracz  </summary>
        /// <returns> Tablicę pól, na którą można się ruszyć   </returns>

        public override List <int> zobacz_mozliwosci(int pole, Szachownica pomocnicza_szachownica)
        {
            var        kolumna_pionka = pole % 8;
            var        gdzie_patrzec  = bialy_gracz == 1 ? -1 : 1;
            List <int> zwrot          = new List <int>();

            if (kolumna_pionka == 0)
            {
                if (!(pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add(pole + gdzie_patrzec * 8 + 1);
                    }
                }
            }

            if (kolumna_pionka == 7)
            {
                if (!(pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add(pole + gdzie_patrzec * 8 - 1);
                    }
                }
            }
            if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8) is null)
            {
                zwrot.Add(pole + gdzie_patrzec * 8);
                if (!ruszono)
                {
                    var gdzie_patrzec_temp = gdzie_patrzec * 2;
                    if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec_temp * 8) is null)
                    {
                        zwrot.Add(pole + gdzie_patrzec_temp * 8);
                    }
                }
            }

            if (!(pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 + 1) is null)) //sprawdza czy może wykonać bicie po skosie
            {
                if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 + 1).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(pole + gdzie_patrzec * 8 + 1);
                }
            }

            if (!(pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1) is null))
            {
                if (pomocnicza_szachownica.figura_na_polu(pole + gdzie_patrzec * 8 - 1).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(pole + gdzie_patrzec * 8 - 1);
                }
            }

            return(zwrot);
        }
예제 #3
0
        /// <summary>
        /// Sprawdza czy ruch jest możliwy, tj czy ruch nie spowoduje szacha
        /// </summary>
        /// <param name="start">Skąd ma być ruch</param>
        /// <param name="koniec">Dokąd ma być ruch</param>
        /// <param name="inp_szachownica">Szachownica na której sprawdzamy możliwość</param>
        /// <returns>P jeśli można się ruszyć bez szacha, F wpp</returns>

        public bool ruch_mozliwy(int start, int koniec, Szachownica inp_szachownica)
        {
            int ktory_gracz = inp_szachownica.figura_na_polu(start).ktory_gracz();

            inp_szachownica.wykonaj_ruch(start, koniec);
            inp_szachownica.aktualizuj_szachowanie();
            if (inp_szachownica.czy_szach(ktory_gracz)) //jeśli po ruchu figury jest szach na przeciwnym królu, to wtedy nie można wykonać tego ruchu
            {
                return(false);
            }
            return(true);
        }
예제 #4
0
        /// <summary>
        /// Sprawdza na które można się ruszyć (zgodnie z szachowymi zasadami)
        /// </summary>
        /// <param name="pole">Pole figury którą chcemy się ruszyć</param>
        /// <param name="inp_szachownica">Szachownica na której sprawdzamy</param>
        /// <returns>Pola, na które ruch nie spowoduje szacha</returns>

        public List <int> ruchy_bez_szacha(int pole, Szachownica inp_szachownica)
        {
            List <int> strzaly = inp_szachownica.figura_na_polu(pole).zobacz_mozliwosci(pole, inp_szachownica);
            List <int> zwrot   = new List <int>();

            foreach (int x in strzaly)
            {
                if (ruch_mozliwy(pole, x, new Szachownica(inp_szachownica)))
                {
                    zwrot.Add(x);
                }
            }
            return(zwrot);
        }
예제 #5
0
        /// <summary>
        /// Funkcja pokazuje, na ktore pola moze ruszyc sie gracz  </summary>
        /// <returns> Tablicę pól, na którą można się ruszyć   </returns>
        public override List <int> zobacz_mozliwosci(int pole, Szachownica szachownica)
        {
            Szachownica pomocnicza_szachownica = new Szachownica(szachownica);
            List <int>  zwrot   = new List <int>();
            int         kolumna = pole % 8;
            int         wiersz  = (pole - kolumna) / 8;

            if (wiersz + 2 <= 7 && kolumna - 1 >= 0)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz + 2) * 8 + kolumna - 1) is null))
                {
                    zwrot.Add((wiersz + 2) * 8 + kolumna - 1);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz + 2) * 8 + kolumna - 1) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz + 2) * 8 + kolumna - 1).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz + 2) * 8 + kolumna - 1);
                    }
                }
            }

            if (wiersz + 1 <= 7 && kolumna - 2 >= 0)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz + 1) * 8 + kolumna - 2) is null))
                {
                    zwrot.Add((wiersz + 1) * 8 + kolumna - 2);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz + 1) * 8 + kolumna - 2) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz + 1) * 8 + kolumna - 2).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz + 1) * 8 + kolumna - 2);
                    }
                }
            }

            if (wiersz - 2 >= 0 && kolumna - 1 >= 0)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz - 2) * 8 + kolumna - 1) is null))
                {
                    zwrot.Add((wiersz - 2) * 8 + kolumna - 1);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz - 2) * 8 + kolumna - 1) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz - 2) * 8 + kolumna - 1).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz - 2) * 8 + kolumna - 1);
                    }
                }
            }

            if (wiersz - 1 >= 0 && kolumna - 2 >= 0)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz - 1) * 8 + kolumna - 2) is null))
                {
                    zwrot.Add((wiersz - 1) * 8 + kolumna - 2);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz - 1) * 8 + kolumna - 2) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz - 1) * 8 + kolumna - 2).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz - 1) * 8 + kolumna - 2);
                    }
                }
            }

            if (wiersz + 2 <= 7 && kolumna + 1 <= 7)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz + 2) * 8 + kolumna + 1) is null))
                {
                    zwrot.Add((wiersz + 2) * 8 + kolumna + 1);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz + 2) * 8 + kolumna + 1) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz + 2) * 8 + kolumna + 1).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz + 2) * 8 + kolumna + 1);
                    }
                }
            }

            if (wiersz + 1 <= 7 && kolumna + 2 <= 7)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz + 1) * 8 + kolumna + 2) is null))
                {
                    zwrot.Add((wiersz + 1) * 8 + kolumna + 2);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz + 1) * 8 + kolumna + 2) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz + 1) * 8 + kolumna + 2).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz + 1) * 8 + kolumna + 2);
                    }
                }
            }

            if (wiersz - 2 >= 0 && kolumna + 1 <= 7)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz - 2) * 8 + kolumna + 1) is null))
                {
                    zwrot.Add((wiersz - 2) * 8 + kolumna + 1);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz - 2) * 8 + kolumna + 1) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz - 2) * 8 + kolumna + 1).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz - 2) * 8 + kolumna + 1);
                    }
                }
            }

            if (wiersz - 1 >= 0 && kolumna + 2 <= 7)
            {
                if ((pomocnicza_szachownica.figura_na_polu((wiersz - 1) * 8 + kolumna + 2) is null))
                {
                    zwrot.Add((wiersz - 1) * 8 + kolumna + 2);
                }

                if (!(pomocnicza_szachownica.figura_na_polu((wiersz - 1) * 8 + kolumna + 2) is null))
                {
                    if (pomocnicza_szachownica.figura_na_polu((wiersz - 1) * 8 + kolumna + 2).ktory_gracz() != this.bialy_gracz)
                    {
                        zwrot.Add((wiersz - 1) * 8 + kolumna + 2);
                    }
                }
            }

            return(zwrot);
        }
예제 #6
0
        /// <summary>
        /// Funkcja pokazuje, na ktore pola moze ruszyc sie gracz  </summary>
        /// <returns> Tablicę pól, na którą można się ruszyć </returns>

        public override List <int> zobacz_mozliwosci(int pole, Szachownica pomocnicza_szachownica)
        {
            List <int> zwrot        = new List <int>();
            int        temp_kolumna = pole % 8;
            int        temp_wiersz  = (pole - temp_kolumna) / 8;

            for (int i = temp_wiersz + 1; i <= 7; i++)
            {
                if (pomocnicza_szachownica.figura_na_polu(i * 8 + temp_kolumna) is null)
                {
                    zwrot.Add(i * 8 + temp_kolumna);
                }
                else if (pomocnicza_szachownica.figura_na_polu(i * 8 + temp_kolumna).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(i * 8 + temp_kolumna);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(i * 8 + temp_kolumna).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
            }

            for (int i = temp_wiersz - 1; i >= 0; i--)
            {
                if (pomocnicza_szachownica.figura_na_polu(i * 8 + temp_kolumna) is null)
                {
                    zwrot.Add(i * 8 + temp_kolumna);
                }
                else if (pomocnicza_szachownica.figura_na_polu(i * 8 + temp_kolumna).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(i * 8 + temp_kolumna);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(i * 8 + temp_kolumna).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
            }

            for (int i = temp_kolumna - 1; i >= 0; i--)
            {
                if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + i) is null)
                {
                    zwrot.Add(temp_wiersz * 8 + i);
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + i).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(temp_wiersz * 8 + i);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + i).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
            }

            for (int i = temp_kolumna + 1; i <= 7; i++)
            {
                if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + i) is null)
                {
                    zwrot.Add(temp_wiersz * 8 + i);
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + i).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(temp_wiersz * 8 + i);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + i).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
            }

            return(zwrot);
        }
예제 #7
0
        /// <summary>
        /// Funkcja aktualizuje w UI pozycje pionków -> przechodzi po tablicy i ustawia nowe pionki
        /// Wynajduje też i aktualizuje informacje gdzie znajdują się dane wieże (to jest niezbędne do wykonania roszady)
        /// </summary>
        private void aktualizuj_plansze()
        {
            List <int> biale_wieze            = new List <int>(2);
            List <int> czarne_wieze           = new List <int>(2);
            int        pozycja_bialego_krola  = 0;
            int        pozycja_czarnego_krola = 0;

            for (int i = 0; i < 64; i++)
            {
                przyciski[i].BorderThickness = new Thickness(0);

                var brush = new ImageBrush();
                //jeśli_gracz zasachowany to znaczy ze zaden gracz niezaszachowany ergo nie ma szacha
                brush.ImageSource       = Convert(plansza.poleNaSzachownicy(i));
                brush.Stretch           = Stretch.Fill;
                przyciski[i].Background = brush;
                if (plansza.figura_na_polu(i) is Krol)
                {
                    if (plansza.figura_na_polu(i).ktory_gracz() == 1)
                    {
                        pozycja_bialego_krola = i;
                    }
                    else
                    {
                        pozycja_czarnego_krola = i;
                    }
                }

                if (plansza.figura_na_polu(i) is Wieza)
                {
                    if (plansza.figura_na_polu(i).ktory_gracz() == 1)
                    {
                        biale_wieze.Add(i);
                    }
                    else
                    {
                        czarne_wieze.Add(i);
                    }
                }
            }
            //aktualizacja pozycji wież dla białego króla
            if (biale_wieze.Count == 0)
            {
                ((Krol)plansza.figura_na_polu(pozycja_bialego_krola)).pozycja_pierwszej_wiezy = -1;
            }
            else if (biale_wieze.Count == 1)
            {
                ((Krol)plansza.figura_na_polu(pozycja_bialego_krola)).pozycja_pierwszej_wiezy = biale_wieze[0];
            }
            else if (biale_wieze.Count == 2)
            {
                ((Krol)plansza.figura_na_polu(pozycja_bialego_krola)).pozycja_drugiej_wiezy = biale_wieze[1];
            }
            else
            {
                ((Krol)plansza.figura_na_polu(pozycja_bialego_krola)).pozycja_drugiej_wiezy = -1;
            }
            //aktualizacja pozycji wież dla czarnego króla
            if (czarne_wieze.Count == 0)
            {
                ((Krol)plansza.figura_na_polu(pozycja_czarnego_krola)).pozycja_pierwszej_wiezy = -1;
            }
            else if (czarne_wieze.Count == 1)
            {
                ((Krol)plansza.figura_na_polu(pozycja_czarnego_krola)).pozycja_pierwszej_wiezy = czarne_wieze[0];
            }
            else if (czarne_wieze.Count == 2)
            {
                ((Krol)plansza.figura_na_polu(pozycja_czarnego_krola)).pozycja_drugiej_wiezy = czarne_wieze[1];
            }
            else
            {
                ((Krol)plansza.figura_na_polu(pozycja_czarnego_krola)).pozycja_drugiej_wiezy = -1;
            }
        }
예제 #8
0
        /// <summary>
        /// Wszystkie możliwe pola na które może ruszyć się król (z wyłączeniem szachowania)
        /// </summary>
        /// <param name="pole">Pole króla</param>
        /// <param name="pomocnicza_szachownica">Szachownica na której sprawdzamy</param>
        /// <returns>Lista pól na które można się ruszyć</returns>
        public override List <int> zobacz_mozliwosci(int pole, Szachownica pomocnicza_szachownica)
        {
            List <int> zwrot = new List <int>();

            void mozliwa_roszada(int temp_pole)
            {
                int temp_kolumna = temp_pole % 8;
                int temp_wiersz  = (temp_pole - temp_kolumna) / 8;
                int dokad;

                for (int i = temp_kolumna - 1; i >= 0; i--)
                {
                    dokad = temp_wiersz * 8 + i;
                    if (pomocnicza_szachownica.figura_na_polu(dokad) is null)
                    {
                        continue;
                    }

                    if (pomocnicza_szachownica.figura_na_polu(dokad).ktory_gracz() == this.bialy_gracz &&
                        pomocnicza_szachownica.figura_na_polu(dokad) is Krol)
                    {
                        zwrot.Add(temp_pole);
                    }
                    break;
                }

                for (int i = temp_kolumna + 1; i <= 7; i++)
                {
                    dokad = temp_wiersz * 8 + i;
                    if (pomocnicza_szachownica.figura_na_polu(dokad) is null)
                    {
                        continue;
                    }

                    if (pomocnicza_szachownica.figura_na_polu(dokad).ktory_gracz() == this.bialy_gracz &&
                        pomocnicza_szachownica.figura_na_polu(dokad) is Krol)
                    {
                        zwrot.Add(temp_pole);
                    }
                    break;
                }
            }

            ///<summary>
            ///Funkcja, ktora sprawdza czy krol moze ruszyc sie na dane pole, zdecydowałem sie uzyc funkcji zeby poprawic czytelnosc kodu
            ///</summary>

            void pom_ruch_krola(int pom_wiersz, int kolumna_pom)
            {
                int dokad = pom_wiersz * 8 + kolumna_pom;

                if (kolumna_pom <= 7 && kolumna_pom >= 0 && pom_wiersz <= 7 && pom_wiersz >= 0)
                {
                    if (pomocnicza_szachownica.figura_na_polu(dokad) is null)
                    {
                        zwrot.Add(dokad);
                    }

                    else
                    {
                        if (pomocnicza_szachownica.figura_na_polu(dokad).ktory_gracz() != this.bialy_gracz)
                        {
                            zwrot.Add(dokad);
                        }
                    }
                }
            }

            int kolumna = pole % 8;
            int wiersz  = (pole - kolumna) / 8;

            pom_ruch_krola(wiersz + 1, kolumna + 1);

            pom_ruch_krola(wiersz + 1, kolumna);

            pom_ruch_krola(wiersz + 1, kolumna - 1);

            pom_ruch_krola(wiersz, kolumna + 1);

            pom_ruch_krola(wiersz, kolumna - 1);

            pom_ruch_krola(wiersz - 1, kolumna - 1);

            pom_ruch_krola(wiersz - 1, kolumna);

            pom_ruch_krola(wiersz - 1, kolumna + 1);

            if (!ruszono && !pomocnicza_szachownica.czy_szach(bialy_gracz))
            {
                if (pozycja_pierwszej_wiezy != -1)
                {
                    mozliwa_roszada(pozycja_pierwszej_wiezy);
                }
                if (pozycja_drugiej_wiezy != -1)
                {
                    mozliwa_roszada(pozycja_drugiej_wiezy);
                }
            }

            return(zwrot);
        }
예제 #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pole"></param>
        /// <param name="pomocnicza_szachownica"></param>
        /// <returns></returns>
        public override List <int> zobacz_mozliwosci(int pole, Szachownica pomocnicza_szachownica)
        {
            List <int> zwrot        = new List <int>();
            int        temp_kolumna = pole % 8;
            int        temp_wiersz  = (pole - temp_kolumna) / 8;

            while (temp_wiersz > 0 && temp_wiersz <= 7 && temp_kolumna > 0 && temp_kolumna <= 7)
            {
                temp_kolumna--; temp_wiersz--;
                if (temp_wiersz * 8 + temp_kolumna < 0 || temp_wiersz * 8 + temp_kolumna > 63)
                {
                    break;
                }
                if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna) is null)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
                if (temp_wiersz == 0 || temp_wiersz == 7 || temp_kolumna == 0 || temp_kolumna == 7)
                {
                    break;
                }
            }

            temp_kolumna = pole % 8; temp_wiersz = (pole - temp_kolumna) / 8;

            while (temp_wiersz >= 0 && temp_wiersz < 7 && temp_kolumna >= 0 && temp_kolumna < 7)
            {
                temp_kolumna++; temp_wiersz++;
                if (temp_wiersz * 8 + temp_kolumna < 0 || temp_wiersz * 8 + temp_kolumna > 63)
                {
                    break;
                }
                if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna) is null)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
                if (temp_wiersz == 0 || temp_wiersz == 7 || temp_kolumna == 0 || temp_kolumna == 7)
                {
                    break;
                }
            }

            temp_kolumna = pole % 8; temp_wiersz = (pole - temp_kolumna) / 8;

            while (temp_wiersz >= 0 && temp_wiersz < 7 && temp_kolumna > 0 && temp_kolumna <= 7)
            {
                temp_kolumna--; temp_wiersz++;
                if (temp_wiersz * 8 + temp_kolumna < 0 || temp_wiersz * 8 + temp_kolumna > 63)
                {
                    break;
                }
                if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna) is null)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
                if (temp_wiersz == 0 || temp_wiersz == 7 || temp_kolumna == 0 || temp_kolumna == 7)
                {
                    break;
                }
            }

            temp_kolumna = pole % 8; temp_wiersz = (pole - temp_kolumna) / 8;

            while (temp_wiersz > 0 && temp_wiersz <= 7 && temp_kolumna >= 0 && temp_kolumna < 7)
            {
                temp_kolumna++; temp_wiersz--;
                if (temp_wiersz * 8 + temp_kolumna < 0 || temp_wiersz * 8 + temp_kolumna > 63)
                {
                    break;
                }
                if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna) is null)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() != this.bialy_gracz)
                {
                    zwrot.Add(temp_wiersz * 8 + temp_kolumna);
                    break;
                }
                else if (pomocnicza_szachownica.figura_na_polu(temp_wiersz * 8 + temp_kolumna).ktory_gracz() == this.bialy_gracz)
                {
                    break;
                }
                if (temp_wiersz == 0 || temp_wiersz == 7 || temp_kolumna == 0 || temp_kolumna == 7)
                {
                    break;
                }
            }

            return(zwrot);
        }