/// <summary>
 /// Konstruktor kopiujący
 /// </summary>
 /// <param name="pom"></param>
 public Szachownica(Szachownica pom)
 {
     plansza = new SzachownicaPole[64];
     for (int i = 0; i < 64; i++)
     {
         plansza[i] = new SzachownicaPole(pom.poleNaSzachownicy(i));
     }
     this.czarny_krol = pom.czarny_krol;
     this.bialy_krol  = pom.bialy_krol;
 }
        /// <summary>
        /// Funckcja bierze pole a zwraca jego graficzną reprezentację w UI
        /// </summary>
        /// <param name="value">Pole które chcemy przekonwertować na obrazek</param>
        /// <returns>Zwraca obrazek, który reprezentuje stan pola</returns>

        public BitmapImage Convert(SzachownicaPole value)
        {
            SzachownicaPole do_konwersji = (SzachownicaPole)value;
            string          lokalizacja  = "";

            lokalizacja = do_konwersji.biale_pole_planszy == 1 ? "Biale" : "Czarne";

            Bierka figuraWobrazek = do_konwersji.figurka;

            if (!(figuraWobrazek is null))
            {
                if (figuraWobrazek is Pionek)
                {
                    lokalizacja += "Pion";
                }
                else if (figuraWobrazek is Krol)
                {
                    lokalizacja += "Krol";
                    if (figuraWobrazek.ktory_gracz() == gracz_zaszachowany)
                    {
                        lokalizacja += "Szach";
                    }
                }
                else if (figuraWobrazek is Krolowa)
                {
                    lokalizacja += "Krolowa";
                }
                else if (figuraWobrazek is Goniec)
                {
                    lokalizacja += "Goniec";
                }
                else if (figuraWobrazek is Wieza)
                {
                    lokalizacja += "Wieza";
                }
                else if (figuraWobrazek is Skoczek)
                {
                    lokalizacja += "Skoczek";
                }

                lokalizacja += figuraWobrazek.ktory_gracz() == 1 ? "Biale" : "Czarne";
            }

            return(new BitmapImage(new Uri($"pack://application:,,,/Images/{lokalizacja}.png")));
        }
        /// <summary>
        /// Ustawiamy wszystkie bierki na odpowiednich miejscach na planszy
        /// </summary>

        private void zainicjuj_gracza(int kolor)
        {
            int wiersz = kolor == 0 ? 1 : 6; // czarny kolor -> ustawiamy pionki w 2gimi rzedzie, jeśli nie, to w 7

            for (int i = 0; i < 8; i++)
            {
                plansza[wiersz * 8 + i] = new SzachownicaPole(new Pionek(kolor));
            }
            wiersz = kolor == 0 ? 0 : 7; //jeśli kolor == 0-> czarny gracz -> ustawiamy na górze, otherwise na dole
            //startowo ustawiamy kolor kazdego pola na bialy, pozniej przejdziemy sie po calej tablict i pozmieniamy jak trzeba
            plansza[wiersz * 8]     = new SzachownicaPole(new Wieza(kolor));
            plansza[wiersz * 8 + 7] = new SzachownicaPole(new Wieza(kolor));
            plansza[wiersz * 8 + 1] = new SzachownicaPole(new Skoczek(kolor));
            plansza[wiersz * 8 + 6] = new SzachownicaPole(new Skoczek(kolor));
            plansza[wiersz * 8 + 2] = new SzachownicaPole(new Goniec(kolor));
            plansza[wiersz * 8 + 5] = new SzachownicaPole(new Goniec(kolor));
            plansza[wiersz * 8 + 4] = new SzachownicaPole(new Krol(kolor));
            plansza[wiersz * 8 + 3] = new SzachownicaPole(new Krolowa(kolor));
        }
        /// <summary>
        /// Tworzy szachownicę z pól -> każdemu polu ustawia kolor
        /// </summary>

        private void zainicjuj_kolory()
        {
            int kolor = 1;

            for (int i = 0; i < 64; i++)
            {
                if (plansza[i] is null)
                {
                    plansza[i] = new SzachownicaPole((Bierka)null);
                }

                plansza[i].biale_pole_planszy = kolor;

                if (i % 8 == 7) //jeśli jesteśmy na końcu wiersza, to kolor się nie zmienia - tak, jak w szachownicy
                {
                    continue;
                }
                else
                {
                    kolor = kolor == 1 ? 0 : 1;
                }
            }
        }