From 3d28e7c068118fc7631813cdfb8be813fee7ef5c Mon Sep 17 00:00:00 2001 From: fdai7723 Date: Wed, 7 Feb 2024 15:23:42 +0000 Subject: [PATCH] =?UTF-8?q?L=C3=A4ufer.c=20Bewegungsregel=20hinzugef=C3=BC?= =?UTF-8?q?gt,=20Hendrik=20Vo=C3=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Laeufer.c | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/Laeufer.c b/src/Laeufer.c index 3e0cb71..af5065f 100644 --- a/src/Laeufer.c +++ b/src/Laeufer.c @@ -15,14 +15,42 @@ bool istzugerlaubt_Laeufer(char** Brett, int startX, int startY, int endX, int e 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)) { 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; }