diff --git a/src/Springer.c b/src/Springer.c index 785d840..aff2cbe 100644 --- a/src/Springer.c +++ b/src/Springer.c @@ -7,6 +7,10 @@ #include "Springer.h" bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player) { + // Schauen ob der zug auf dem Spielbrett passiert + if (endX < 0 || endX >= 8 || endY < 0 || endY >= 8) { + return false; + } // Berechnung des unterschieds der start und endpositionen int dx = abs(endX - startX); int dy = abs(endY - startY); @@ -17,6 +21,16 @@ bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int if ((dx == 2 && dy == 1) || (dx == 1 && dy == 2)) { char EndPosition = Brett[endY][endX]; + //schaut ob die Endposition von einer eigenen Figur belegt ist + if (player == PLAYER_WHITE) { + if (isupper(EndPosition) && EndPosition != ' ') { + return false; + } + } else { // PLAYER_BLACK + if (islower(EndPosition) && EndPosition != ' ') { + return false; + } + } if (player == PLAYER_WHITE && islower(EndPosition)) { return true; // Erlaubter zug weil die Position leer ist oder von einer gegnerischen Figur belegt ist