public Peca Promocao(char c, Peca p) { Peca aux; switch (c) { case 'd': aux = new Dama(p.Cor, Tab); return(aux); case 'D': aux = new Dama(p.Cor, Tab); return(aux); case 'b': aux = new Bispo(p.Cor, Tab); return(aux); case 'B': aux = new Bispo(p.Cor, Tab); return(aux); case 'c': aux = new Cavalo(p.Cor, Tab); return(aux); case 'C': aux = new Cavalo(p.Cor, Tab); return(aux); case 't': aux = new Torre(p.Cor, Tab); return(aux); case 'T': aux = new Torre(p.Cor, Tab); return(aux); default: throw new TabuleiroException("O jogo quebrou por favo reinicie!"); } }
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 se pode colocar me xeque!"); } //Jogada especial Promoção Peca p = tab.peca(destino); 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); Console.Write("Entre com o valor para o tipo de peça desejado: 1-cavalo, 2,bispo , 3-torre e 4-dama: "); int n = int.Parse(Console.ReadLine()); switch (n) { case 1: Peca Cavalo = new Cavalo(tab, p.Cor); tab.colocarPeca(Cavalo, destino); pecas.Add(Cavalo); break; case 2: Peca Bispo = new Bispo(tab, p.Cor); tab.colocarPeca(Bispo, destino); pecas.Add(Bispo); break; case 3: Peca Torre = new Torre(tab, p.Cor); tab.colocarPeca(Torre, destino); pecas.Add(Torre); break; case 4: Peca Dama = new Dama(tab, p.Cor); tab.colocarPeca(Dama, destino); pecas.Add(Dama); break; } } } if (estaEmXeque(corAdversaria(jogadorAtual))) { xeque = true; } else { xeque = false; } if (testeXequeMate(corAdversaria(jogadorAtual))) { terminada = true; } else { turno++; mudaJogador(); } //Jogada especial enpassant 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); 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); while (true) { Console.Clear(); Console.WriteLine("Para qual peça você deseja promover o peão?"); Console.WriteLine("(A) Bispo"); Console.WriteLine("(B) Cavalo"); Console.WriteLine("(C) Rainha"); Console.WriteLine("(D) Torre"); char pecaEscolhida = char.Parse(Console.ReadLine()); if (pecaEscolhida == 'A' || pecaEscolhida == 'a') { Peca bispo = new Bispo(Tab, p.Cor); Tab.ColocarPeca(bispo, destino); Pecas.Add(bispo); break; } else if (pecaEscolhida == 'B' || pecaEscolhida == 'b') { Peca cavalo = new Cavalo(Tab, p.Cor); Tab.ColocarPeca(cavalo, destino); Pecas.Add(cavalo); break; } else if (pecaEscolhida == 'C' || pecaEscolhida == 'c') { Peca dama = new Dama(Tab, p.Cor); Tab.ColocarPeca(dama, destino); Pecas.Add(dama); break; } else if (pecaEscolhida == 'D' || pecaEscolhida == 'd') { Peca torre = new Torre(Tab, p.Cor); Tab.ColocarPeca(torre, destino); Pecas.Add(torre); break; } else { Console.WriteLine("Opção inválida!"); Console.ReadLine(); } } } } if (EstaEmXeque(Adversaria(JogadorAtual))) { Xeque = true; } else { Xeque = false; } if (TesteXequeMate(Adversaria(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; } else { VulneravelEnPassant = null; } }