Exemple #1
0
        public Peca movimento(Posicao origem, Posicao destino)
        {
            Peca p = tabu.removerPeca(origem);

            p.atualizarQtdMovimentos();
            Peca pecaCapturada = tabu.removerPeca(destino);

            tabu.incluirPeca(p, destino);
            if (pecaCapturada != null)
            {
                capturadas.Add(pecaCapturada);
            }
            //jogada roque
            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    torre        = tabu.removerPeca(origemTorre);
                torre.atualizarQtdMovimentos();
                tabu.incluirPeca(torre, destinoTorre);
            }
            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    torre        = tabu.removerPeca(origemTorre);
                torre.atualizarQtdMovimentos();
                tabu.incluirPeca(torre, destinoTorre);
            }
            //jogada roque
            // jogada en passant
            if (p is Peao)
            {
                if (origem.coluna != destino.coluna && pecaCapturada == null)
                {
                    Posicao posicaoDoPeao;
                    if (p.cor == Cor.Branco)
                    {
                        posicaoDoPeao = new Posicao(destino.linha + 1, destino.coluna);
                    }
                    else
                    {
                        posicaoDoPeao = new Posicao(destino.linha - 1, destino.coluna);
                    }
                    pecaCapturada = tabu.removerPeca(posicaoDoPeao);
                    capturadas.Add(pecaCapturada);
                }
            }
            // jogada en passant
            return(pecaCapturada);
        }