|
@ -15,13 +15,41 @@ bool istzugerlaubt_Laeufer(char** Brett, int startX, int startY, int endX, int e |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Überprüfen Sie, ob der Zug eine gültige Diagonalbewegung ist |
|
|
|
|
|
|
|
|
// Prüfen ob eine gegnerische Figur den Weg kreuzt |
|
|
|
|
|
// Bestimmen der Bewegungsrichtung auf der x-Achse |
|
|
|
|
|
int xDirection; |
|
|
|
|
|
if ((endX - startX) > 0) { |
|
|
|
|
|
// Wenn das Ziel in x-Richtung größer als der Startpunkt ist, positiv entlang der x-Achse |
|
|
|
|
|
xDirection = 1; |
|
|
|
|
|
} else { |
|
|
|
|
|
// Andernfalls negativ an der x-Achse lang |
|
|
|
|
|
xDirection = -1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Bestimmen der Bewegungsrichtung auf der y-Achse |
|
|
|
|
|
int yDirection; |
|
|
|
|
|
if ((endY - startY) > 0) { |
|
|
|
|
|
// Wenn das Ziel in y-Richtung größer als der Startpunkt ist,positiv entlang der y-Achse |
|
|
|
|
|
yDirection = 1; |
|
|
|
|
|
} else { |
|
|
|
|
|
// Andernfalls negativ entlang der y-Achse |
|
|
|
|
|
yDirection = -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? |
|
|
|
|
|
if (Brett[x][y] != ' ') { |
|
|
|
|
|
// Wenn das aktuelle Feld nicht leer ist |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Überprüfen, ob der Zug eine gültige Diagonalbewegung ist |
|
|
if (abs(endX - startX) == abs(endY - startY)) { |
|
|
if (abs(endX - startX) == abs(endY - startY)) { |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Prüfen ob eine gegnerische Figur den Weg kreuzt |
|
|
|
|
|
|
|
|
|
|
|
// Wenn keines der obigen Kriterien erfüllt ist, ist der Zug ungültig |
|
|
// Wenn keines der obigen Kriterien erfüllt ist, ist der Zug ungültig |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|