public void DesfazMovimento(Posicao inicio, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RetirarPeca(destino); p.DecrementarQntMovimentos(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); PecasCapturadas.Remove(pecaCapturada); } Tab.ColocarPeca(p, inicio); // #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(destinoTorre); T.DecrementarQntMovimentos(); Tab.ColocarPeca(T, origemTorre); } // #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(destinoTorre); T.DecrementarQntMovimentos(); Tab.ColocarPeca(T, origemTorre); } // #Jogada Especial: En passant if (p is Peao) { if (inicio.Coluna != destino.Coluna && pecaCapturada == PecaVulneravelEnPassant) { 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); } } }
public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RemoverPeca(destino); p.DecrementarQntMovimentos(); if (pecaCapturada != null) { Tab.AdicionarPeca(pecaCapturada, destino); _capturadas.Remove(pecaCapturada); } Tab.AdicionarPeca(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 torre = Tab.RemoverPeca(destinoTorre); torre.DecrementarQntMovimentos(); Tab.AdicionarPeca(torre, origemTorre); } // #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(destinoTorre); torre.DecrementarQntMovimentos(); Tab.AdicionarPeca(torre, origemTorre); } // #JogadaEspecial En Passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == VuneravelEnPassant) { Peca peao = Tab.RemoverPeca(destino); Posicao posP; if (p.Cor == Cor.Branca) { posP = new Posicao(3, destino.Coluna); } else { posP = new Posicao(4, destino.Coluna); } Tab.AdicionarPeca(peao, posP); } } }
public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RetirarPeca(destino); p.DecrementarQntMovimentos(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); Capturadas.Remove(pecaCapturada); } Tab.ColocarPeca(p, origem); }