public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tabuleiro.RetirarPeca(destino); p.DecrementarQtdMovimento(); if (pecaCapturada != null) { Tabuleiro.ColocarPeca(pecaCapturada, destino); Capturadas.Remove(pecaCapturada); } Tabuleiro.ColocarPeca(p, origem); //#jogada especial 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 torre = Tabuleiro.RetirarPeca(destinoT); torre.DecrementarQtdMovimento(); Tabuleiro.ColocarPeca(torre, origemT); } //#jogada especial 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 torre = Tabuleiro.RetirarPeca(destinoT); torre.DecrementarQtdMovimento(); Tabuleiro.ColocarPeca(torre, origemT); } //#jogada especial enpassant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEnPassant) { Peca peao = Tabuleiro.RetirarPeca(destino); Posicao posP; if (p.Cor == Cor.Branca) { posP = new Posicao(3, destino.Coluna); } else { posP = new Posicao(4, destino.Coluna); } Tabuleiro.ColocarPeca(peao, posP); } } }
public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RetirarPeca(destino); p.DecrementarQtdMovimento(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); this._capturadas.Remove(pecaCapturada); } Tab.ColocarPeca(p, origem); //#jogadaEspecial Roque Pequeno if (p is Rei && destino.Coluna == origem.Coluna + 2) { Posicao origemDaTorre = new Posicao(origem.Linha, origem.Coluna + 3); Posicao destinoDaTorre = new Posicao(origem.Linha, origem.Coluna + 1); Peca Torre = Tab.RetirarPeca(destinoDaTorre); Torre.DecrementarQtdMovimento(); Tab.ColocarPeca(Torre, origemDaTorre); } //#jogadaEspecial Roque Grande if (p is Rei && destino.Coluna == origem.Coluna - 2) { Posicao origemDaTorre = new Posicao(origem.Linha, origem.Coluna - 4); Posicao destinoDaTorre = new Posicao(origem.Linha, origem.Coluna - 1); Peca Torre = Tab.RetirarPeca(destinoDaTorre); Torre.DecrementarQtdMovimento(); Tab.ColocarPeca(Torre, origemDaTorre); } //#jogadaEspecial en passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == VuneravelEnPassant) { 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.RetirarPeca(destino); p.DecrementarQtdMovimento(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); Capturadas.Remove(pecaCapturada); } Tab.ColocarPeca(p, origem); // #Jogada especial 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.DecrementarQtdMovimento(); Tab.ColocarPeca(T, origemT); } // #Jogada especial 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.DecrementarQtdMovimento(); Tab.ColocarPeca(T, origemT); } // #Jogada especial en passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEmPassant) { Peca peao = Tab.RetirarPeca(destino); Posicao posP; if (p.Collor == Cor.Branca) { posP = new Posicao(3, destino.Coluna); } else { posP = new Posicao(4, destino.Coluna); } Tab.ColocarPeca(peao, posP); } } }