Esempio n. 1
0
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.RetirarPeca(origem);

            p.IncrementarQteMovimentos();
            Peca PecaCapturada = Tab.RetirarPeca(destino);

            Tab.ColocarPeca(p, destino);
            if (PecaCapturada != null)
            {
                ConjuntoPecasCapturadas.Add(PecaCapturada);
            }

            //#JogadaEspecial Roque Pequeno
            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao origemTorre  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna + 1);

                Peca T = Tab.RetirarPeca(origemTorre);
                T.IncrementarQteMovimentos();
                T.Tabuleiro.ColocarPeca(T, destinoTorre);
            }

            //#JogadaEspecial Roque Grande
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao origemTorre  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna - 1);

                Peca T = Tab.RetirarPeca(origemTorre);
                T.IncrementarQteMovimentos();
                T.Tabuleiro.ColocarPeca(T, destinoTorre);
            }

            //#JogadaEspecial En Passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && PecaCapturada == null)
                {
                    Posicao posP;

                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(destino.Linha + 1, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(destino.Linha - 1, destino.Coluna);
                    }

                    PecaCapturada = Tab.RetirarPeca(posP);
                    ConjuntoPecasCapturadas.Add(PecaCapturada);
                }
            }

            return(PecaCapturada);
        }
Esempio n. 2
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DecrementarQteMovimentos();
            if (PecaCapturada != null)
            {
                Tab.ColocarPeca(PecaCapturada, destino);
                ConjuntoPecasCapturadas.Remove(PecaCapturada);
            }
            Tab.ColocarPeca(p, origem);

            //#JogadaEspecial Roque Pequeno
            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao origemTorre  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna + 1);

                Peca T = Tab.RetirarPeca(destinoTorre);
                T.DecrementarQteMovimentos();
                T.Tabuleiro.ColocarPeca(T, origemTorre);
            }

            //#JogadaEspecial Roque Pequeno
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao origemTorre  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna - 1);

                Peca T = Tab.RetirarPeca(destinoTorre);
                T.DecrementarQteMovimentos();
                T.Tabuleiro.ColocarPeca(T, origemTorre);
            }

            //#JogadaEspecial En Passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && PecaCapturada == VulneravelEnPassant)
                {
                    Peca    peao = Tab.RetirarPeca(destino);
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }

                    Tab.ColocarPeca(peao, posP);
                }
            }
        }