private void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca pecaDestino = Tabuleiro.RetirarPeca(destino); pecaDestino.DecrementarQtdeMovimentos(); if (pecaCapturada != null) { Tabuleiro.ColocarPeca(pecaCapturada, destino); PecasCapturadas.Remove(pecaCapturada); } Tabuleiro.ColocarPeca(pecaDestino, origem); if (pecaDestino is Rei && destino.Coluna == origem.Coluna + 2) { DesfazRoquePequeno(origem); } if (pecaDestino is Rei && destino.Coluna == origem.Coluna - 2) { DesfazRoqueGrande(origem); } if (pecaDestino is Peao) { DesfazEnPassant(pecaDestino, pecaCapturada, origem, destino); } }
private Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca peca = Tabuleiro.RetirarPeca(origem); peca.IncrementarQtdeMovimentos(); Peca pecaCapturada = Tabuleiro.RetirarPeca(destino); Tabuleiro.ColocarPeca(peca, destino); if (pecaCapturada != null) { PecasCapturadas.Add(pecaCapturada); } if (peca is Rei && destino.Coluna == origem.Coluna + 2) { ExecutaRoquePequeno(origem); } if (peca is Rei && destino.Coluna == origem.Coluna - 2) { ExecutaRoqueGrande(origem); } if (peca is Peao) { ExecutaEnPassant(peca, pecaCapturada, origem, destino); } return(pecaCapturada); }
public Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca p = Tab.RetirarPeca(origem); p.IncrementarQtdDeMovimentos(); Peca pecaCapturada = Tab.RetirarPeca(destino); Tab.ColocarPeca(p, destino); if (pecaCapturada != null) { PecasCapturadas.Add(pecaCapturada); } // Jogada especial reque pequeno if (p is Rei && destino.Coluna == origem.Coluna + 2) { Posicao origTorre = new Posicao(origem.Linha, origem.Coluna + 3); Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna + 1); Peca T = Tab.RetirarPeca(origTorre); T.IncrementarQtdDeMovimentos(); Tab.ColocarPeca(T, destinoTorre); } // Jogada especial reque pequeno if (p is Rei && destino.Coluna == origem.Coluna - 2) { Posicao origTorre = new Posicao(origem.Linha, origem.Coluna - 4); Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna - 1); Peca T = Tab.RetirarPeca(origTorre); T.IncrementarQtdDeMovimentos(); Tab.ColocarPeca(T, destinoTorre); } // Jogada especial 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.RetirarPeca(posP); PecasCapturadas.Add(pecaCapturada); } } return(pecaCapturada); }
private Peca ExecutaMovimento(Posicao origem, Posicao destino) { Peca peca = Tabuleiro.RetirarPeca(origem); peca.IncrementarMovimento(); Peca pecaCapturada = Tabuleiro.RetirarPeca(destino); Tabuleiro.ColocarPeca(peca, destino); if (pecaCapturada != null) { PecasCapturadas.Add(pecaCapturada); } // 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(origemTorre); torre.IncrementarMovimento(); Tabuleiro.ColocarPeca(torre, destinoTorre); } // 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(origemTorre); torre.IncrementarMovimento(); Tabuleiro.ColocarPeca(torre, destinoTorre); } if (peca is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == null) { Posicao posicaoPeao; if (peca.Cor == Cor.Branca) { posicaoPeao = new Posicao(destino.Linha + 1, destino.Coluna); } else { posicaoPeao = new Posicao(destino.Linha - 1, destino.Coluna); } pecaCapturada = Tabuleiro.RetirarPeca(posicaoPeao); PecasCapturadas.Add(pecaCapturada); } } return(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 DesfazerMovimento(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca p = Tab.RetirarPeca(destino); p.DecrementarQtdDeMovimentos(); if (pecaCapturada != null) { Tab.ColocarPeca(pecaCapturada, destino); PecasCapturadas.Remove(pecaCapturada); } Tab.ColocarPeca(p, origem); // Jogada especial reque pequeno if (p is Rei && destino.Coluna == origem.Coluna + 2) { Posicao origTorre = new Posicao(origem.Linha, origem.Coluna + 3); Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna + 1); Peca T = Tab.RetirarPeca(origTorre); T.DecrementarQtdDeMovimentos(); Tab.ColocarPeca(T, origTorre); } // Jogada especial reque grande if (p is Rei && destino.Coluna == origem.Coluna - 2) { Posicao origTorre = new Posicao(origem.Linha, origem.Coluna - 4); Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna - 1); Peca T = Tab.RetirarPeca(origTorre); T.DecrementarQtdDeMovimentos(); Tab.ColocarPeca(T, origTorre); } // Jogada especial 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); } } }
private void ExecutaEnPassant(Peca peca, Peca pecaCapturada, Posicao origem, Posicao destino) { if (origem.Coluna != destino.Coluna && pecaCapturada == null) { Posicao posPeca; if (peca.Cor == Cor.Branco) { posPeca = new Posicao(destino.Linha + 1, destino.Coluna); } else { posPeca = new Posicao(destino.Linha - 1, destino.Coluna); } pecaCapturada = Tabuleiro.RetirarPeca(posPeca); PecasCapturadas.Add(pecaCapturada); } }