public Peca ExecutaMovimento(Posicao inicio, Posicao destino) { Peca p = Tab.RetirarPeca(inicio); p.IncrementarQntMovimentos(); Peca pecaCapturada = Tab.RetirarPeca(destino); Tab.ColocarPeca(p, destino); if (pecaCapturada != null) { PecasCapturadas.Add(pecaCapturada); } // #Jogada Especial: Roque pequeno if (p is Rei && destino.Coluna == inicio.Coluna + 2) { Posicao origemTorre = new Posicao(inicio.Linha, inicio.Coluna + 3); Posicao destinoTorre = new Posicao(inicio.Linha, inicio.Coluna + 1); Peca T = Tab.RetirarPeca(origemTorre); T.IncrementarQntMovimentos(); Tab.ColocarPeca(T, destinoTorre); } // #Jogada Especial: Roque grande if (p is Rei && destino.Coluna == inicio.Coluna - 2) { Posicao origemTorre = new Posicao(inicio.Linha, inicio.Coluna - 4); Posicao destinoTorre = new Posicao(inicio.Linha, inicio.Coluna - 1); Peca T = Tab.RetirarPeca(origemTorre); T.IncrementarQntMovimentos(); Tab.ColocarPeca(T, destinoTorre); } // #Jogada Especial: En Passant if (p is Peao) { if (inicio.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); PecasCapturadas.Add(pecaCapturada); } } return(pecaCapturada); }
public Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca p = Tab.RemoverPeca(origem); p.IncrementarQntMovimentos(); Peca pecaCapturada = Tab.RemoverPeca(destino); Tab.AdicionarPeca(p, destino); if (pecaCapturada != null) { _capturadas.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 torre = Tab.RemoverPeca(origemTorre); Tab.AdicionarPeca(torre, 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 torre = Tab.RemoverPeca(origemTorre); Tab.AdicionarPeca(torre, 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.RemoverPeca(posP); _capturadas.Add(pecaCapturada); } } return(pecaCapturada); }
public Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca p = Tab.RetirarPeca(origem); p.IncrementarQntMovimentos(); Peca PecaCapturada = Tab.RetirarPeca(destino); Tab.ColocarPeca(p, destino); if (PecaCapturada != null) { Capturadas.Add(PecaCapturada); } return(PecaCapturada); }