public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RetirarPeca(destino); p.DecrementarMovimento(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); pecasCapturadas.Remove(pecaCapturada); } //#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 = Tab.RetirarPeca(destinoT); T.DecrementarMovimento(); Tab.ColocarPeca(T, origemT); } //#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 = Tab.RetirarPeca(destinoT); T.IncrementarMovimento(); Tab.ColocarPeca(T, origemT); } //#jogadaEspecial En Passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == vulneravelEnPassant) { Peca peao = Tab.RetirarPeca(destino); Posicao posP; if (p.CorAtual == Cor.Branca) { posP = new Posicao(3, destino.Coluna); } else { posP = new Posicao(4, destino.Coluna); } Tab.ColocarPeca(peao, posP); } } Tab.ColocarPeca(p, origem); }
public void DesfazerMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca pecaDeOrigem = Tabuleiro.RetirarPeca(destino); Tabuleiro.ColocarPeca(pecaDeOrigem, origem); pecaDeOrigem.DecrementarMovimento(); if (pecaCapturada != null) { Tabuleiro.ColocarPeca(pecaCapturada, destino); _pecasCapturadas.Remove(pecaCapturada); } }
public void DesfazerMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca peca = Tabuleiro.RetirarPeca(destino); peca.DecrementarMovimento(); if (pecaCapturada != null) { Tabuleiro.ColocarPeca(pecaCapturada, destino); PecasCapturadas.Remove(pecaCapturada); } Tabuleiro.ColocarPeca(peca, origem); // roque pequeno if (peca 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 = Tabuleiro.RetirarPeca(destinoTorre); torre.DecrementarMovimento(); Tabuleiro.ColocarPeca(torre, origemTorre); } // roque grande if (peca 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 = Tabuleiro.RetirarPeca(destinoTorre); torre.IncrementarMovimento(); Tabuleiro.ColocarPeca(torre, origemTorre); } // en passant if (peca is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == PecaEnPassant) { Peca peao = Tabuleiro.RetirarPeca(destino); Posicao posicaoPeao; if (peca.Cor == Cor.Branca) { posicaoPeao = new Posicao(3, destino.Coluna); } else { posicaoPeao = new Posicao(4, destino.Coluna); } Tabuleiro.ColocarPeca(peao, posicaoPeao); } } }
public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RetirarPeca(destino); p.DecrementarMovimento(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); Capturadas.Remove(pecaCapturada); } Tab.ColocarPeca(p, origem); //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 = Tab.RetirarPeca(destinoT); T.DecrementarMovimento(); Tab.ColocarPeca(T, origemT); } //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 = Tab.RetirarPeca(destinoT); T.DecrementarMovimento(); Tab.ColocarPeca(T, origemT); } //#JOAGADA ESPECIAL EN PASSANT if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEnPassant) { Peca peao = Tab.RetirarPeca(destino); Posicao posP; if (p.cor == Cor.Amarelo) { posP = new Posicao(3, destino.Coluna); } else { posP = new Posicao(4, destino.Coluna); } Tab.ColocarPeca(peao, posP); } } }