public Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca p = Tab.RetirarPeca(origem); p.IncrementarMovimentos(); Peca pecaCapturada = Tab.RetirarPeca(destino); Tab.ColocarPeca(p, destino); if (pecaCapturada != null) { Capturadas.Add(pecaCapturada); } //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 T = Tab.RetirarPeca(origemTorre); T.IncrementarMovimentos(); Tab.ColocarPeca(T, destinoTorre); } //Roque grande if (p is Rei && destino.Coluna == (origem.Coluna - 2)) { Posicao origemTorre = new Posicao(origem.Linha, origem.Coluna - 2); Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna - 1); Peca T = Tab.RetirarPeca(origemTorre); T.IncrementarMovimentos(); Tab.ColocarPeca(T, destinoTorre); } // En Passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == null) { Posicao posPeao; if (p.Cor == Cor.Branca) { posPeao = new Posicao(destino.Linha + 1, destino.Coluna); } else { posPeao = new Posicao(destino.Linha - 1, destino.Coluna); } pecaCapturada = Tab.RetirarPeca(posPeao); Capturadas.Add(pecaCapturada); } } return(pecaCapturada); }
public Peca executaMovimento(Posicao origem, Posicao destino) { Peca p = tab.RetirarPeca(origem); p.IncrementarMovimentos(); Peca pecaCapturada = tab.RetirarPeca(destino); tab.ColocarPeca(p, destino); if (pecaCapturada != null) { Capturadas.Add(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(origemT); T.IncrementarMovimentos(); tab.ColocarPeca(T, destinoT); } // #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(origemT); T.IncrementarMovimentos(); tab.ColocarPeca(T, destinoT); } // #jogadaespecial En Passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada is 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); Capturadas.Add(pecaCapturada); } } return(pecaCapturada); }
public Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca p = Tab.RetirarPeca(origem); p.IncrementarMovimentos(); Peca pecaCapturada = Tab.RetirarPeca(destino); Tab.ColocarPeca(p, destino); if (pecaCapturada != null) { capturadas.Add(pecaCapturada); } 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 T = Tab.RetirarPeca(origemTorre); T.IncrementarMovimentos(); Tab.ColocarPeca(T, 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 T = Tab.RetirarPeca(origemTorre); T.IncrementarMovimentos(); Tab.ColocarPeca(T, destinoTorre); } 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.RetirarPeca(posP); capturadas.Add(pecaCapturada); } } return(pecaCapturada); }