public bool przesun(int x, int y, bool pgn) { bool ret = false; if (this.mozliweRuchy.Contains(new Point(x, y))) { //if (this.kolor == Enums.Kolor_pionków.Biale && Gracz_Czlowiek.szach && this.GetType() != typeof(Krol)) //{ // MessageBox.Show("Jest szach. Należy ruszyć się królem."); // return false; //} this.pozycjaX = x; this.pozycjaY = y; ret = true; // funkcja podzielona na dwie, ponieważ ta sama funkcja uzywana jest // do symulowania zachowania gracza i do przestawiania bierek przez mechanizm sztucznej inteligencji // a gdy algorytm coś oblicza, to nie chcemy sumować liczby wykonanych ruchów. chcemy // jedynie zmieniać współrzędne bierek if (pgn) { this.generujMozliweRuchy(Gra.bierkiBiale, Gra.bierkiCzarne); this.wyczyscMozliweRuchyZeSmieci(); this.bylRuch = true; string numer = string.Empty; Gra.ileRuchow++; int ktoryNumer = Gra.ileRuchow / 2; ktoryNumer++; if (Gra.ileRuchow % 2 == 1) { numer = " " + ktoryNumer + ". "; } else { numer = " "; } Gra.pgnString += numer + this.litera + Gra.tlumaczNazwePolaPGN(x, y).ToLower().Trim(); Gra.ustawSzach(Gra.bierkiBiale, Gra.bierkiCzarne); if (Gracz_Czlowiek.szach) { MessageBox.Show("Zaszachowano gracza"); Bierka.wygenerujMozliweRuchyKrola(); } if (Gracz_Komputer.szach) { MessageBox.Show("Zaszachowano komputer"); Bierka.wygenerujMozliweRuchyKrola(); } } } return(ret); }
static public void roszada(Bierka wieza, Bierka krol, Enums.Roszada typRoszady) { int pozycjaXKrola = 0; // docelowa pozycja krola int pozycjaXWiezy = 0; // docelowa pozycja wieży string PGN = "0-0"; // dla krotkiej roszady if (typRoszady == Enums.Roszada.Dluga) { pozycjaXKrola = 2; pozycjaXWiezy = 3; PGN += "-0"; } else { pozycjaXKrola = 6; pozycjaXWiezy = 5; } // pozycje Y się nie zmieniają. wieza.pozycjaX = pozycjaXWiezy; krol.pozycjaX = pozycjaXKrola; // wygenerowanie możliwych ruchów dla biurerk, które biorą udział w roszadzie wieza.generujMozliweRuchy(Gra.bierkiBiale, Gra.bierkiCzarne); wieza.wyczyscMozliweRuchyZeSmieci(); wieza.bylRuch = true; krol.generujMozliweRuchy(Gra.bierkiBiale, Gra.bierkiCzarne); krol.wyczyscMozliweRuchyZeSmieci(); krol.bylRuch = true; string numer = string.Empty; Gra.ileRuchow++; int ktoryNumer = Gra.ileRuchow / 2; ktoryNumer++; if (Gra.ileRuchow % 2 == 1) { numer = " " + ktoryNumer + ". "; } else { numer = " "; } Gra.pgnString += numer + PGN; Gra.ustawSzach(Gra.bierkiBiale, Gra.bierkiCzarne); if (Gracz_Czlowiek.szach) { MessageBox.Show("Zaszachowano gracza"); Bierka.wygenerujMozliweRuchyKrola(); } if (Gracz_Komputer.szach) { MessageBox.Show("Zaszachowano komputer"); Bierka.wygenerujMozliweRuchyKrola(); } }