Example #1
0
        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);
        }
Example #2
0
        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();
            }
        }