/// <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(); }
/// <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; }
/// <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); }
/// <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); }
/// <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); }
/// <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(); }
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(); }
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(); }
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; }
/// <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); }
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(); }
/// <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);
/// <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); }
public static void Main(string[] args) { Szachownica szachownica = new Szachownica(); szachownica.narysujSzachownice(); }
public abstract bool CzyMozeRuszyc(Szachownica NastepnaPozycja);
/// <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); }
/// <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); }
public void PoczatkowaPozycja(Szachownica pozycja) { this.AktualnaPozycja = pozycja; }