Information Technology Reference
In-Depth Information
public boolean isCheckmate() {
int king = 0;
// search king
for (int i = 21; i < 99; i++) {
if ((board[i]%100/10==color) && (board[i]%10==6)) {
king = i;
break;
}
if (i%10 == 8)
i += 2;
} if ((board[king - 21] % 10 == 2)
&& (board[king - 21] % 100 / 10 != color))
return true;
if ((board[king + 21] % 10 == 2)
&& (board[king + 21] % 100 / 10 != color))
return true;
if ((board[king - 19] % 10 == 2)
&& (board[king - 19] % 100 / 10 != color))
return true;
if ((board[king + 19] % 10 == 2)
&& (board[king + 19] % 100 / 10 != color))
return true;
if ((board[king - 8] % 10 == 2)
&& (board[king - 8] % 100 / 10 != color))
return true;
if ((board[king + 8] % 10 == 2)
&& (board[king + 8] % 100 / 10 != color))
return true;
if ((board[king - 12] % 10 == 2)
&& (board[king - 12] % 100 / 10 != color))
return true;
if ((board[king + 12] % 10 == 2)
&& (board[king + 12] % 100 / 10 != color))
return true;
Die Methode sucht den König, dessen Partei am Zug ist, um dann von dieser Position
ausgehend zu überprüfen, ob irgendeine feindliche Figur dieses Feld angreift. Ist dies der
Fall, wird true zurückgegeben. Wenn alle Überprüfungen negativ verlaufen, gibt die
Methode false zurück. Dies hat Auswirkungen auf die Methode simulize() , die
nunmehr nicht nur einen Zug ausführen, sondern im Vorfelde auf Schach überprüfen und
dann gegebenenfalls den Zug wieder zurücknehmen können muss.
Search WWH ::




Custom Search