Beispiel #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);
        }
        /// <summary>
        /// Funkcja ustawia figury na planszy i resetuję grę
        /// </summary>

        private void NowaGra()
        {
            plansza            = new Szachownica();
            czyja_kolej        = 1;
            klikniete          = false;
            gracz_zaszachowany = -1;
            aktualizuj_plansze();
        }
Beispiel #3
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);
        }
 /// <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;
 }
Beispiel #5
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);
        }
Beispiel #6
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);
        }
Beispiel #7
0
        /// <summary>
        /// Z racji, że ruch królowej to kombinacja możliwości ruchu gońca i wieży, to sumuję pola w które mogą ruszyć się te figury, 
        /// jakby żyły na miejscu królowej
        /// </summary>

        public override List<int> zobacz_mozliwosci(int pole, Szachownica pomocnicza_szachownica)
        {

            Goniec goniec_pom = new Goniec(bialy_gracz);
            pomocnicza_szachownica.ustaw_na_polu(goniec_pom, pole);
            List<int> mozliwosci_gonca = goniec_pom.zobacz_mozliwosci(pole, pomocnicza_szachownica);

            Wieza wieza_pom = new Wieza(bialy_gracz);
            pomocnicza_szachownica.ustaw_na_polu(wieza_pom, pole);
            List<int> mozliwosci_wiezy = wieza_pom.zobacz_mozliwosci(pole, pomocnicza_szachownica);
            mozliwosci_gonca.AddRange(mozliwosci_wiezy);
            pomocnicza_szachownica.ustaw_na_polu(new Krolowa(bialy_gracz), pole); //królowa wraca na pole

            return mozliwosci_gonca;
        }
        public static int LiczbaFigur(this Szachownica szach)
        {
            string[,] array = szach.Plansza;
            int count = 0;

            foreach (var s in array)
            {
                if (!string.IsNullOrEmpty(s))
                {
                    count++;
                }
            }

            return(count);
        }
Beispiel #9
0
        /// <summary>
        /// main.
        /// </summary>
        /// <param name="args">
        /// args.
        /// </param>
        private static void Main(string[] args)
        {
            var szachownica = new Szachownica();

            var figura = szachownica.PobierzFigure(new Pozycja(2, 1));

            Console.WriteLine(figura.ToString());
            Console.WriteLine(((Pionek)figura).ToString());      // Ta sama metoda ToString zwraca co innego w zaleznosci do czego rzutujemy.
            Console.WriteLine(((Pionek)figura).ToString("moj")); // Metode nadpisana przez 'new' mozna przeciazac.

            var cel = new Pozycja(2, 2);

            szachownica.PrzestawFigure(figura.Pozycja, cel);

            szachownica.IleFigur();
        }
Beispiel #10
0
        static void Main(string[] args)
        {
            Pozycja p  = new Pozycja("B5");
            Pozycja p2 = new Pozycja("D4");
            Figura  f  = GenerujFigure.Generuj(TypFigury.Pionek, p, Figura.KOLOR_BIALY);

            f.Pozycja = new Pozycja("E5");
            Console.WriteLine(f.CzyMoznaPrzesunac(p2));
            Szachownica sz = Szachownica.Instancja;

            sz['A', 1] = "test";
            Console.WriteLine(sz['A', 1]);
            sz.ileFigur();

            Console.ReadKey();
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            Szachownica szachownica = Szachownica.Szach;

            Figura Król   = Ruch.inst(NazwaFigury.Król, 'C', 4, Kolory.White);
            Figura Wieża  = Ruch.inst(NazwaFigury.Wieża, 'D', 7, Kolory.Black);
            Figura Hetman = Ruch.inst(NazwaFigury.Hetman, 'G', 3, Kolory.White);
            Figura Goniec = Ruch.inst(NazwaFigury.Goniec, 'G', 6, Kolory.Black);


            szachownica[Król, 'D', 5]   = Król.ToString();
            szachownica[Wieża, 'G', 7]  = Wieża.ToString();
            szachownica[Hetman, 'A', 2] = Hetman.ToString();
            szachownica[Goniec, 'B', 3] = Goniec.ToString();
            szachownica.PokazSzachownice();
            Console.WriteLine("Na szachownicy znajdują się " + szachownica.LiczbaFigur() + " figury.");

            Console.ReadKey();
        }
Beispiel #12
0
        static void Main(string[] args)
        {
            //Szachownica szachownica = new Szachownica();
            Szachownica szachownica = Toolbox.szachownicaInst;

            szachownica.bialyKrol.ruch(new Pozycja("D2"));
            szachownica.bialyGoniec1.ruch(new Pozycja("F4"));
            szachownica.czarnaWieza1.ruch(new Pozycja("D8"));

            Console.WriteLine(szachownica.bialyKrol);
            Console.WriteLine(szachownica.bialyGoniec1);
            Console.WriteLine(szachownica.czarnaWieza1);
            Console.WriteLine(szachownica.czarnaDama);

            int liczFigury = szachownica.liczFigury();

            Console.WriteLine("Na szachownicy jest {0} figur.", liczFigury.ToString());

            Console.ReadKey();
            return;
        }
Beispiel #13
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);
        }
Beispiel #14
0
        static void Main(string[] args)
        {
            Console.Write("Podaj pozycję początkową , np. B4  : ");
            string wyborPozycji = Console.ReadLine();

            Console.Write("Podaj kolor (c - czarne , b - białe) : ");
            string wyburKoloru = Console.ReadLine();

            Console.WriteLine("Wybierz figurę :");
            Console.WriteLine("   1. Król.");
            Console.WriteLine("   2. Goniec.");
            Console.WriteLine("   3. Wieża.");
            Console.WriteLine("   4. Pionek.");

            string wyborFigury = Console.ReadLine();

            switch (wyborFigury)
            {
            case "1":

                Krol krol = new Krol();
                krol.PoczatkowaPozycja(new Szachownica(wyborPozycji));
                krol.WybranyKolor(wyburKoloru);
                Console.WriteLine("Twoja figura to: " + krol.NazwaFigury + ", kolor : " + krol.WybranyKolor(wyburKoloru) + " , na pozycji : " + wyborPozycji);
                Console.Write("Podaj pozycję docelową : ");
                string      nowaPozycja     = Console.ReadLine();
                Szachownica docelowaPozycja = new Szachownica(nowaPozycja);
                if (krol.CzyMozeRuszyc(docelowaPozycja))
                {
                    Zdarzenie.write("Ruch z: " + wyborPozycji + " na " + nowaPozycja + "  jest OK");
                }
                else
                {
                    Zdarzenie.write("Ruch z: " + wyborPozycji + " na " + nowaPozycja + "  jest ZABRONIONY");
                }
                break;

            case "2":

                Goniec goniec = new Goniec();
                goniec.PoczatkowaPozycja(new Szachownica(wyborPozycji));
                goniec.WybranyKolor(wyburKoloru);
                Console.WriteLine("Twoja figura to: " + goniec.NazwaFigury + ", kolor : " + goniec.WybranyKolor(wyburKoloru) + " , na pozycji : " + wyborPozycji);
                Console.Write("Podaj pozycję docelową : ");
                string      nowaPozycja1     = Console.ReadLine();
                Szachownica docelowaPozycja1 = new Szachownica(nowaPozycja1);
                if (goniec.CzyMozeRuszyc(docelowaPozycja1))
                {
                    Console.WriteLine("Ruch z: " + wyborPozycji + " na " + nowaPozycja1 + "  jest OK");
                }
                else
                {
                    Console.WriteLine("Ruch z: " + wyborPozycji + " na " + nowaPozycja1 + "  jest ZABRONIONY");
                }
                break;

            case "3":
                Wieza wieza = new Figury.Wieza();
                wieza.PoczatkowaPozycja(new Szachownica(wyborPozycji));
                wieza.WybranyKolor(wyburKoloru);
                Console.WriteLine("Twoja figura to: " + wieza.NazwaFigury + ", kolor : " + wieza.WybranyKolor(wyburKoloru) + " , na pozycji : " + wyborPozycji);
                Console.Write("Podaj pozycję docelową : ");
                string      nowaPozycja2     = Console.ReadLine();
                Szachownica docelowaPozycja2 = new Szachownica(nowaPozycja2);
                if (wieza.CzyMozeRuszyc(docelowaPozycja2))
                {
                    Console.WriteLine("Ruch z: " + wyborPozycji + " na " + nowaPozycja2 + "  jest OK");
                }
                else
                {
                    Console.WriteLine("Ruch z: " + wyborPozycji + " na " + nowaPozycja2 + "  jest ZABRONIONY");
                }
                break;

            case "4":
                Pionek pionek = new Pionek();
                pionek.PoczatkowaPozycja(new Szachownica(wyborPozycji));
                pionek.WybranyKolor(wyburKoloru);
                Console.WriteLine("Twoja figura to: " + pionek.NazwaFigury + ", kolor : " + pionek.WybranyKolor(wyburKoloru) + " , na pozycji : " + wyborPozycji);
                Console.Write("Podaj pozycję docelową : ");
                string      nowaPozycja3     = Console.ReadLine();
                Szachownica docelowaPozycja3 = new Szachownica(nowaPozycja3);
                if (pionek.CzyMozeRuszyc(docelowaPozycja3))
                {
                    Console.WriteLine("Ruch z: " + wyborPozycji + " na " + nowaPozycja3 + "  jest OK");
                }
                else
                {
                    Console.WriteLine("Ruch z: " + wyborPozycji + " na " + nowaPozycja3 + "  jest ZABRONIONY");
                }
                break;

            default:
                Console.WriteLine("Zły wybór !");
                break;
            }



            Console.Read();
        }
Beispiel #15
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 abstract List <int> zobacz_mozliwosci(int pole, Szachownica pomocnicza_szachownica);
Beispiel #16
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);
        }
Beispiel #17
0
        public static void Main(string[] args)
        {
            Szachownica szachownica = new Szachownica();

            szachownica.narysujSzachownice();
        }
Beispiel #18
0
 public abstract bool CzyMozeRuszyc(Szachownica NastepnaPozycja);
Beispiel #19
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);
        }
Beispiel #20
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);
        }
Beispiel #21
0
 public void PoczatkowaPozycja(Szachownica pozycja)
 {
     this.AktualnaPozycja = pozycja;
 }