Beispiel #1
0
 /** @see com.darlan.xadrez.Tabuleiro#getCasa(int, int) */
 public Casa getCasa(int x, int y) {
   CasaGUI casaTemp;
   for (int i = 0; i < super.getComponentCount(); i++) {
     casaTemp = (CasaGUI) super.getComponent(i);
     if ((casaTemp.getPosicaoX() == x) && (casaTemp.getPosicaoY() == y)) {
       return casaTemp;
     }
   }
   return null;
 }
Beispiel #2
0
  /**
   * Verifica se o rei preto sofreu cheque mate.
   *
   * @return <code>true</code> o rei preto sofreu cheque mate.
   */
  public boolean isChequeMatePreto() {
    ReiPretoGUI reiPreto = null;
    CasaGUI casaDoReiTemp = null;
    CasaGUI casaDoRei = null;
    // Pega o rei branco no tabuleiro.
    for (int x = 0; x < 8; x++)
      for (int y = 0; y < 8; y++) {
        casaDoReiTemp = (CasaGUI) this.getCasa(x, y);
        if ((casaDoReiTemp.getPeca() instanceof ReiPretoGUI)) {
          casaDoRei = casaDoReiTemp;
          reiPreto = (ReiPretoGUI) casaDoRei.getPeca();
        }
      }

    // verifica se o rei está sendo atacado
    if (casaDoRei.isAtaqueBranco()) {
      // se o rei não pode mover-se
      if (reiPreto.getCasasEmAtaque(this).size() == 0) {
        // Veririca se o cavalo adversário dá cheque mate.
        if (this.cavaloDaChequeMate(reiPreto)) {
          return true;
        }

        Vector pecasQueAtacam = this.pecasQueAtacamRei(reiPreto);
        // Verifica se mais de uma peça está atacando o rei.
        if (pecasQueAtacam.size() >= 2) {
          return true;
        } else {
          Peca peca = (Peca) pecasQueAtacam.get(0);
          CasaGUI casaTemp = (CasaGUI) this.getCasa(peca.getPosicaoX(), peca.getPosicaoY());
          // verifica se a peça que está atacando o rei também está
          // sendo atacada.
          if (casaTemp.isAtaquePreto()) return false;
          // verifica se uma peça branca impede que a peça preta der
          // cheque mate.
          if (pecaPretaImpedeCheque((Peca) pecasQueAtacam.get(0), reiPreto)) {
            return false;
          } else {
            return true;
          }
        } // fim else
      } // fim do if(reiBranco.getCasasEmAtaque(this).size()==0)
    }
    return false;
  }
Beispiel #3
0
 /** @see com.darlan.xadrez.gui.AbstractPecaGUI#setCasasEmAtaque(Tabuleiro) */
 public void setCasasEmAtaque(Tabuleiro tabuleiro) {
   Casa casaTemp = tabuleiro.getCasa(x - 1, y + 1);
   if (casaTemp != null && casaTemp.temPeca()) ((CasaGUI) casaTemp).setAtaquePreto(true);
   casaTemp = tabuleiro.getCasa(x + 1, y + 1);
   if (casaTemp != null && casaTemp.temPeca()) ((CasaGUI) casaTemp).setAtaquePreto(true);
 }