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); char escolha = TelaXadrez.escolherPeca(); Peca novaPeca = escolha switch { 't' => new Torre(tab, p.cor), 'c' => new Cavalo(tab, p.cor), 'b' => new Bispo(tab, p.cor), 'd' => new Dama(tab, p.cor), _ => throw new TabuleiroException("Peça invalida!"), }; tab.colocarPeca(novaPeca, destino); pecas.Add(novaPeca); /* * 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 bool podeMover(Posicao pos) { Peca p = tabu.peca(pos); return(p == null || p.cor != cor); }
public bool podeMovimentar(Posicao posicao) { Peca pecaNoTabuleiro = _tabuleiro.peca(posicao); return(pecaNoTabuleiro == null); }
public void colocarNovaPeca(char coluna, int linha, Peca peca) { tab.colocarPeca(peca, new PosicaoXadrez(coluna, linha).ToPosicao()); pecas.Add(peca); }
private bool PodeMover(Posicao pos) { Peca p = Tab.Peca(pos); return(p == null || p.Cor != Cor); }
/// <summary> /// Executa o movimento, confere se está em xeque, itera o turno, muda jogador. /// </summary> /// <param name="origem"></param> /// <param name="destino"></param> public void realizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = executaMovimento(origem, destino); // Jogada não pode deixar jogador atual em xeque: if (estaEmXeque(jogadorAtual)) { desfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } Peca p = tab.peca(destino); // Jogada especial: En Passant: // Se for peão e [moveu duas casas para baixo (preta) ou moveu duas casas para cima (branca)] if (p is Peao) { if ((destino.Linha == origem.Linha - 2) || (destino.Linha == origem.Linha + 2)) { vulneravelEnPassant = p; } } // Se nessa jogada não há um peão en passant, anula variável novamente (jogada só pode ser executada imediatamente após a movimentação do peão. else { vulneravelEnPassant = null; } // Jogada Especial: 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); pecas.Remove(p); Peca dama = new Dama(tab, p.cor); tab.colocarPeca(dama, destino); pecas.Add(dama); } } // Checando se adversário está em xeque: if (estaEmXeque(corAdversaria(jogadorAtual))) { xeque = true; } else { xeque = false; } // Se realizei a jogada e o adversário do jagador atual está em xeque-mate: if (testeXequeMate(corAdversaria(jogadorAtual))) { terminada = true; } else { // Itera turno: turno++; // Muda Jogador: if (jogadorAtual == Cor.Branca) { jogadorAtual = Cor.Preta; } else { jogadorAtual = Cor.Branca; } } }
private bool PodeMover(Posicao pos) { Peca p = Tab._peca(pos); return(p == null || p.CorPeca != this.CorPeca); }
private bool podeMover(Posicao pos) { Peca p = Tabuleiro.peca(pos); return(p == null || p.Cor != Cor); }
private bool PodeMover(Posicao posicao) { Peca Peca = Tabuleiro.Peca(posicao); return(Peca == null || Peca.Cor != Cor); }
// metodo auxiliar/ melhorar o colocarPeças public void colocarNovaPeca(char coluna, int linha, Peca peca) { tab.colocarPeca(peca, new PosicaoXadrez(coluna, linha).toPosicao()); // guardando as peças no conjunto pecas. pecas.Add(peca); }
private bool existeInimigo(Posicao pos) { Peca p = Tabuleiro.peca(pos); return(p != null && p.Cor != Cor); // Tira dúvida com o Fred }
private bool PodeMover(Posicao pos) { Peca peca = Tab.GetPeca(pos); return(peca == null || peca.Cor != Cor); }
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 passant 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(); } // # Joga Especial en passant if (p is Peao && (destino.linha == origem.linha - 2 || destino.linha == origem.linha + 2)) { vulneravelEmPassant = p; } else { vulneravelEmPassant = null; } }
private bool podeMover(Posicao posicao) { Peca peca = base.tabuleiro.peca(posicao); return(peca == null || peca.cor != base.cor); }
private bool posicaoInimigo(Posicao pos) { Peca p = tabuleiro.peca(pos); return(p != null && p.cor != this.cor); }
private bool podeMover(Posicao posicao) { Peca peca = tabuleiro.peca(posicao);
public void colocarNovaPeca(int linha, char coluna, Peca peca) { tab.colocarPeca(peca, new PosicaoXadrez(linha, coluna).toPosicao()); pecas.Add(peca); }
public bool PodeMover(Posicao pos) { Peca p = Tab.QualPeca(pos); return(p == null || p.Cor != this.Cor); }
private bool TesteTorreParaRoque(Posicao pos) { Peca p = tab.peca(pos); return(p != null && p is Torre && p.Cor == Cor && p.QtdMovimentos == 0); }
private bool TesteTorreParaRoque(Posicao pos) { Peca p = Tab.QualPeca(pos); return(p != null && p is Torre && p.Cor == this.Cor && p.QteDeMovimentos == 0); }
private bool testeTorreParaRoque(Posicao pos) { Peca p = tab.peca(pos); return(p != null && p is Torre && p.cor == cor && p.qteMovimentos == 0); }
private bool ExisteInimigo(Posicao pos) { Peca p = Tab.Value.Peca(pos); return(p != null && p.Cor.Value != Cor.Value); }
private bool podeMover(Posicao pos) { Peca p = tab.peca(pos); return(p == null || p.cor != cor); }
public void colocaNovaPeca(char coluna, int linha, Peca p) { tab.ColocarPeca(p, new PosicaoXadrez(coluna, linha).toPosicao()); pecas.Add(p); }
private bool existeInimigo(Posicao pos) { Peca p = tab.peca(pos); return(p != null && p.cor != cor); }
public void realizarJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = executarMovimento(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.Branco && destino.Linha == 0) || (p.cor == Cor.Preto && destino.Linha == 7)) { p = tab.retirarPeca(destino); pecas.Remove(p); ConsoleColor aux = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(); Console.WriteLine("#--- PROMOÇÃO! ---#"); Console.WriteLine("Opções de promoção:"); Console.WriteLine(" - Dama[D]\n - Torre[T]\n - Bispo[B]\n - Cavalo[C]"); Console.ForegroundColor = aux; Console.Write("Digite o caractere da opção escolhida: "); char escolha = char.Parse(Console.ReadLine()); switch (escolha) { //DAMA case 'D': Peca dama = new Dama(tab, p.cor); tab.colocarPeca(destino, dama); pecas.Add(dama); break; case 'd': Peca dama1 = new Dama(tab, p.cor); tab.colocarPeca(destino, dama1); pecas.Add(dama1); break; //TORRE case 'T': Peca torre = new Torre(tab, p.cor); tab.colocarPeca(destino, torre); pecas.Add(torre); break; case 't': Peca torre1 = new Torre(tab, p.cor); tab.colocarPeca(destino, torre1); pecas.Add(torre1); break; //BISPO case 'B': Peca bispo = new Bispo(tab, p.cor); tab.colocarPeca(destino, bispo); pecas.Add(bispo); break; case 'b': Peca bispo1 = new Bispo(tab, p.cor); tab.colocarPeca(destino, bispo1); pecas.Add(bispo1); break; //CAVALO case 'C': Peca cavalo = new Cavalo(tab, p.cor); tab.colocarPeca(destino, cavalo); pecas.Add(cavalo); break; case 'c': Peca cavalo1 = new Cavalo(tab, p.cor); tab.colocarPeca(destino, cavalo1); pecas.Add(cavalo1); break; } } } 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 override bool[,] movimentosPossiveis() { //posição teste. implementar entrada depois Posicao pos = new Posicao(0, 0); Posicao posInicial = new Posicao(0, 0); // recebe todas as linhas e colunas do tabuleiro em verdadeiro ou falso bool[,] matriz = new bool[_tabuleiro.linhas, _tabuleiro.colunas]; // instacia uma peca auxiliar que recebe a peça do tabuleiro Peca pecaNoTabuleiro = _tabuleiro.peca(_posicao); //primeiro movimento if (pecaNoTabuleiro._cor == Cor.Branca && pecaNoTabuleiro._qtdMovimentos == 0) { posInicial.setarValores(_posicao._linha + 2, _posicao._coluna); pos.setarValores(_posicao._linha + 1, _posicao._coluna); } else if (pecaNoTabuleiro._cor == Cor.Preta && _qtdMovimentos == 0) { posInicial.setarValores(_posicao._linha - 2, _posicao._coluna); pos.setarValores(_posicao._linha - 1, _posicao._coluna); } if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos)) { matriz[pos._linha, pos._coluna] = true; matriz[posInicial._linha, posInicial._coluna] = true; } // verificar acima if (pecaNoTabuleiro._cor == Cor.Branca) { pos.setarValores(_posicao._linha + 1, _posicao._coluna); } else if (pecaNoTabuleiro._cor == Cor.Preta) { pos.setarValores(_posicao._linha - 1, _posicao._coluna); } if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos)) { matriz[pos._linha, pos._coluna] = true; } // verificar acima direita if (pecaNoTabuleiro._cor == Cor.Branca) { pos.setarValores(_posicao._linha + 1, _posicao._coluna + 1); } else if (pecaNoTabuleiro._cor == Cor.Preta) { pos.setarValores(_posicao._linha - 1, _posicao._coluna - 1); } if (_tabuleiro.posicaoPermitida(pos) && adversario(pos)) { matriz[pos._linha, pos._coluna] = true; } // verificar acima esquerda if (pecaNoTabuleiro._cor == Cor.Branca) { pos.setarValores(_posicao._linha + 1, _posicao._coluna - 1); } else if (pecaNoTabuleiro._cor == Cor.Preta) { pos.setarValores(_posicao._linha - 1, _posicao._coluna + 1); } if (_tabuleiro.posicaoPermitida(pos) && adversario(pos)) { matriz[pos._linha, pos._coluna] = true; } return(matriz); }
private bool podeMover(Posicao pos) { Peca p = tab.peca(pos); return(p == null || p.cor != cor);//retornará se o destino é nullo ou se o destino possui peça adversária }
private bool adversario(Posicao posicao) { Peca pAdversaria = _tabuleiro.peca(posicao); return(pAdversaria != null && pAdversaria._cor != _cor); }
public PartidaDeXadrez() : base() { vulneravelEnPassant = null; colocarPecas(); }