|
@ -20,15 +20,22 @@ bool istzugerlaubt_Laeufer(char** Brett, int startX, int startY, int endX, int e |
|
|
int xDirection = (endX - startX) > 0 ? 1 : -1; |
|
|
int xDirection = (endX - startX) > 0 ? 1 : -1; |
|
|
int yDirection = (endY - startY) > 0 ? 1 : -1; |
|
|
int yDirection = (endY - startY) > 0 ? 1 : -1; |
|
|
|
|
|
|
|
|
// Mit dem Startpunkt anfangen und Richtung des Endpunkts bewegen |
|
|
|
|
|
int x, y; |
|
|
|
|
|
for (x = startX + xDirection, y = startY + yDirection; x != endX; x += xDirection, y += yDirection) { |
|
|
|
|
|
// Aktuelles Feld auf dem Brett leer? |
|
|
|
|
|
|
|
|
int x = startX + xDirection; |
|
|
|
|
|
int y = startY + yDirection; |
|
|
|
|
|
|
|
|
|
|
|
// Die Schleife, solange x nicht gleich endX ist, jedes Feld auf dem Weg des Läufers testen. |
|
|
|
|
|
while (x != endX) { |
|
|
|
|
|
// aktuelles Feld auf dem Brett prüfen, ob es leer ist. |
|
|
if (Brett[x][y] != ' ') { |
|
|
if (Brett[x][y] != ' ') { |
|
|
// Wenn das aktuelle Feld nicht leer ist |
|
|
|
|
|
|
|
|
// Wenn das aktuelle Feld nicht leer ist, ist der Zug nicht erlaubt. |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Wenn das getestete Feld leer ist, zum nächsten Feld in der Zugrichtung bewegen. |
|
|
|
|
|
x += xDirection; |
|
|
|
|
|
y += yDirection; |
|
|
|
|
|
} // Schleife Ende |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Überprüfen, ob der Zug eine gültige Diagonalbewegung ist |
|
|
// Überprüfen, ob der Zug eine gültige Diagonalbewegung ist |
|
|
if (abs(endX - startX) == abs(endY - startY)) { |
|
|
if (abs(endX - startX) == abs(endY - startY)) { |
|
|