* Führen die Punkte 1-3 zu keinem Erfolg, so ist der Spieler matt.
*/
// Situationsvariable
int situationOf[] = new int[4]; // 0 - Punkte, 1 - Spieler1, 2 - Spieler2, 3 - Spieler3
Board analyzedBoard = null;
// Prüfen, ob ein Zugvorschlag oder das aktuelle Spielbrett überprüft werden soll.
// Es wird beiden eine einheitliche Variable zugewiesen.
if(pCurrentBoard == null)
analyzedBoard = currentTP.boardafter;
else
analyzedBoard = pCurrentBoard;
//*** Geschachte Spieler anfordern und deren Könige anfordern
int checkedPlayer[] = checked(analyzedBoard);
String kingCoord[] = findAllKings(analyzedBoard);
// Spieler durchlaufen
for(int player = 1; player <= 3; player++){
if(checkedPlayer[player] == 1){ // Ist aktueller Spieler im Schach?
this.threatenedByEnemy(pCurrentPlayer, pCurrentBoard, kingCoord[player-1]); // Liste bilden
int blockedKing[] = kingMovePossible(analyzedBoard); // Bewegugnsmöglichkeiten vom König anfordern
if(blockedKing[player-1] == 1){ // Kann sich der König nicht bewegen?
// Feldkoordinaten der Hashmap durchlaufen
for(int coord = 0; coord < HexenschachPanel.FIELD_NAMES.length; coord++){
// Zu analysierende Koordinate anfordern
String analyzedCoord = HexenschachPanel.FIELD_NAMES[coord];
// Prüfen, ob die Koordinate existiert
if(analyzedBoard.boardHM.get(analyzedCoord) != null){
// Sachprüfung durchführen
String currentFigurePlayer = analyzedBoard.getFigureType(analyzedCoord);
if(currentFigurePlayer != null){ // Wenn Figur auf dem Feld ist:
int playerOfFigure = analyzedBoard.getPlayer(analyzedCoord); // Spieler, dem die Figur gehört, anfordern
if(playerOfFigure == pCurrentPlayer // Wenn Spieler gleich dem aktiven Spieler...
|| playerOfFigure == pCurrentPlayer++){ // ...oder gleich dem folgenden Spieler:
// Zugmöglichkeiten der Figur anfordern und prüfen, ob welche existieren
TurnPossibility possibleFigureMove[] = analyzedBoard.calculateTurnPossibility(analyzedCoord); // Alle möglichen Züge der Figur anfordern
if(possibleFigureMove != null){
for(int i = 0; i < possibleFigureMove.length; i++){
//Figuren-Koordinaten, die König bedrohen anfordern
int index = 0;
Iterator <String> TFItr = ThreateningFigures.iterator();
while(TFItr.hasNext()){ // Pro Figur, die den König bedroht
String currentCoord = TFItr.next();
playerOfFigure = analyzedBoard.getPlayer(currentCoord); // Spieler anfordern, dem die Figur gehört
if(playerOfFigure != pCurrentPlayer){ // Wenn Figur nicht vom aktiven Spieler ist:
TurnPossibility possibleFigureMove2[] = analyzedBoard.calculateTurnPossibility(currentCoord); // Zugmöglichkeiten der Figur anfordern
if(possibleFigureMove2 != null){
for(int j = 0; j < possibleFigureMove2.length; j++){ // Zugmöglichkeiten durchgehen
Board analyzedBoard2 = possibleFigureMove2[j].boardafter;
if(analyzedBoard2.getPlayer(currentCoord) != player){ // Wenn Figur nicht vom aktuellen Spieler:
int checkCheck[] = checked(analyzedBoard2); // Schach-Status des aktuellen Spielers anfordern
if(checkCheck[player] == 1) // Wenn Spieler im Schach ist
situationOf[player] = 1; // Spieler Schachmatt setzen
else{ // Sonst:
situationOf[player] = 0; // Spieler ist nicht matt