/** * 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; }