コード例 #1
0
        public Peca ExecutarMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tabuleiro.RetirarPeca(origem);

            p.IncrementarQtemovimentos();
            Peca pecaCapiturada = Tabuleiro.RetirarPeca(destino);

            Tabuleiro.ColocarPeca(p, destino);
            if (pecaCapiturada != null)
            {
                Capituradas.Add(pecaCapiturada);
            }

            // jogadaEspecial Roque Pequeno
            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao origemT  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao destinoT = new Posicao(origem.Linha, origem.Coluna + 1);
                Peca    T        = Tabuleiro.RetirarPeca(origemT);
                T.IncrementarQtemovimentos();
                Tabuleiro.ColocarPeca(T, destinoT);
            }

            // jogadaEspecial Roque Grande
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao origemT  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao destinoT = new Posicao(origem.Linha, origem.Coluna - 1);
                Peca    T        = Tabuleiro.RetirarPeca(origemT);
                T.IncrementarQtemovimentos();
                Tabuleiro.ColocarPeca(T, destinoT);
            }

            // jogadaEspecial En Passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapiturada == 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);
                    }
                    pecaCapiturada = Tabuleiro.RetirarPeca(posP);
                    Capituradas.Add(pecaCapiturada);
                }
            }
            return(pecaCapiturada);
        }