public void realizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = executaMovimento(origem, destino); if (estaEmXeque(jogadorAtual)) { desfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } Peca p = tab.peca(destino); // #jogadaespecial promocao if (p is Peao) { if ((p.cor == Cor.Branca && destino.linha == 0) || (p.cor == Cor.Preta && destino.linha == 7)) { p = tab.retirarPeca(destino); pecas.Remove(p); Peca dama = new Dama(tab, p.cor); tab.colocarPeca(dama, destino); pecas.Add(dama); } } if (estaEmXeque(adversaria(jogadorAtual))) { xeque = true; } else { xeque = false; } if (testeXequemate(adversaria(jogadorAtual))) { terminada = true; } else { turno++; mudaJogador(); } // #jogadaespecial en passant if (p is Peao && (destino.linha == origem.linha - 2 || destino.linha == origem.linha + 2)) { vulneravelEnPassant = p; } else { vulneravelEnPassant = null; } }
public void RealizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = ExecutaMovimento(origem, destino); if (EstaEmXeque(JogadorAtual)) { DesfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } Peca p = Tab.Peca(destino); // #jogadaespecial promocao if (p is Peao) { if ((p.Cor == Cor.Branca && destino.Linha == 0) || (p.Cor == Cor.Preta && destino.Linha == 7)) { p = Tab.RetiraPeca(destino); Pecas.Remove(p); Peca dama = new Dama(p.Cor, Tab); Tab.ColocaPeca(dama, destino); Pecas.Add(dama); } } if (EstaEmXeque(Adversaria(JogadorAtual))) { Xeque = true; } else { Xeque = false; } if (TestaXequemate(Adversaria(JogadorAtual))) { Terminada = true; } else { Turno++; MudaJogador(); } // #jogadaespecial en passant if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2)) { VulneravelEnPassant = p; } else { VulneravelEnPassant = null; } }
public void RealizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = ExecutarMovimento(origem, destino); if (EstaEmCheque(JogadorAtual)) { DesfazerMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque"); } Peca p = Tab.peca(destino); //jogada de Promoçâo if (p is Peao) { if (p.cor == Cor.Branca && destino.Linha == 0 || p.cor == Cor.Preta && destino.Linha == 7) { p = Tab.RetirarPeca(destino); _peca.Remove(p); Peca d = new Dama(Tab, p.cor); Tab.ColocarPeca(d, destino); _peca.Add(d); } } if (EstaEmCheque(_Adversario(JogadorAtual))) { Xeque = true; } else { Xeque = false; } if (TesteXequeMate(_Adversario(JogadorAtual))) { Terminada = true; } else { Turno++; MudaJogador(); } //Jogada En Passant if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2)) { VulneravelEnPassant = p; } }
public void realizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = executaMovimento(origem, destino); if (estaEmXeque(jogadorAtual)) { desfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } Peca p = tab.peca(destino); // #jogadaespecial promocao if (p is Peao) { if (p.cor == Cor.Branca && destino.linha == 0 || (p.cor == Cor.Preta && destino.linha == 7)) { p = tab.retirarPeca(destino); pecas.Remove(p); Peca pecaPromovida = new Dama(tab, p.cor); Console.Write("Escolha uma classe para promover seu peão: "); string classe = Console.ReadLine(); if (classe == "C") { pecaPromovida = new Cavalo(tab, p.cor); } else if (classe == "B") { pecaPromovida = new Bispo(tab, p.cor); } else if (classe == "T") { pecaPromovida = new Torre(tab, p.cor); } else if (classe == "D") { pecaPromovida = new Dama(tab, p.cor); } tab.colocarPeca(pecaPromovida, destino); pecas.Add(pecaPromovida); } } if (estaEmXeque(adversaria(jogadorAtual))) { xeque = true; } else { xeque = false; } if (testeXequemate(adversaria(jogadorAtual))) { terminada = true; } else { turno++; mudaJogador(); } //#jogadaespecial en passant if (p is Peao && (destino.linha == origem.linha - 2 || destino.linha == destino.linha + 2)) { vulneravelEnPassant = p; } else { vulneravelEnPassant = null; } //#jogadaespecial promocao if (p is Peao && destino.linha == 0 && p.cor == Cor.Branca) { } }