From 14d484ff78e8d80ce41b59c382b693cb75f72317 Mon Sep 17 00:00:00 2001 From: fdai7723 Date: Wed, 7 Feb 2024 15:40:58 +0000 Subject: [PATCH] =?UTF-8?q?refactoring:=20Laeufer.c=20Regel=20vereinfacht,?= =?UTF-8?q?=20Hendrik=20Vo=C3=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Laeufer.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Laeufer.c b/src/Laeufer.c index 1493ab9..b841648 100644 --- a/src/Laeufer.c +++ b/src/Laeufer.c @@ -17,18 +17,25 @@ bool istzugerlaubt_Laeufer(char** Brett, int startX, int startY, int endX, int e // Prüfen ob eine gegnerische Figur den Weg kreuzt // Richtung des Zuges bestimmen - int xDirection = (endX - startX) > 0 ? 1 : -1; - int yDirection = (endY - startY) > 0 ? 1 : -1; +int xDirection = (endX - startX) > 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] != ' ') { - // Wenn das aktuelle Feld nicht leer ist + // Wenn das aktuelle Feld nicht leer ist, ist der Zug nicht erlaubt. 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 if (abs(endX - startX) == abs(endY - startY)) {