diff --git a/src/Springer.c b/src/Springer.c index aff2cbe..6ace74b 100644 --- a/src/Springer.c +++ b/src/Springer.c @@ -43,3 +43,17 @@ bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int return false; // kein erlaubter zug } +bool bewegeSpringer(char** Brett, int startX, int startY, int endX, int endY, Player player) { + // Überprüfen ob der Zug legal ist + if (!istzugerlaubt_Springer(Brett, startX, startY, endX, endY, player)) { + return false; // Zug ist nicht erlaubt + } + + char springer = Brett[startY][startX]; + + // Aktualisiere das Brett. + Brett[startY][startX] = ' '; + Brett[endY][endX] = springer; + + return true; +} diff --git a/src/Springer.h b/src/Springer.h index f7cc8e7..f8d00ab 100644 --- a/src/Springer.h +++ b/src/Springer.h @@ -3,5 +3,5 @@ #include "spieler.h" bool istzugerlaubt_Springer(char** Brett, int startX, int startY, int endX, int endY, Player player); - +bool bewegeSpringer(char** Brett, int startX, int startY, int endX, int endY, Player player); #endif // Springer diff --git a/test/test_Springer.c b/test/test_Springer.c index 88e5fcd..923bc6a 100644 --- a/test/test_Springer.c +++ b/test/test_Springer.c @@ -42,4 +42,43 @@ void test_istzugerlaubt_Springer_IllegalMove(void) { Schachbrettspeicher_freigeben(Brett); } +void test_bewegeSpringer(void) { + char **Brett = Schachbrett_erstellen(); + bool Ergebnis; + + // Scenario 1: Legaler Zug, weißer Springer von b1 zu c3 + Ergebnis = bewegeSpringer(Brett, 1, 0, 2, 2, PLAYER_WHITE); + TEST_ASSERT_TRUE(Ergebnis); + TEST_ASSERT_EQUAL_CHAR('N', Brett[2][2]); + TEST_ASSERT_EQUAL_CHAR(' ', Brett[0][1]); + + Schachbrettspeicher_freigeben(Brett); + Brett = Schachbrett_erstellen(); + + // Scenario 2: Illegaler Zug , vom Brett + Ergebnis = bewegeSpringer(Brett, 7, 6, 8, 8, PLAYER_WHITE); + TEST_ASSERT_FALSE(Ergebnis); + + // Scenario 3: Legaler Zug, schwarzer Springer von g8 zu f6 + Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK); + TEST_ASSERT_TRUE(Ergebnis); + TEST_ASSERT_EQUAL_CHAR('n', Brett[5][5]); + TEST_ASSERT_EQUAL_CHAR(' ', Brett[7][6]); + + Schachbrettspeicher_freigeben(Brett); + Brett = Schachbrett_erstellen(); + + // Scenario 4: Illegaler Zug, schwarzer Springer bewegt sich auf andere schwarze Figur + Brett[5][5] = 'n'; // ein anderer Springer als Hindernis + Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK); + TEST_ASSERT_FALSE(Ergebnis); + + // Scenario 5: Legaler Zug zum einnehmen feindlicher Figur + Brett[5][5] = 'P'; // Weißer Bauer auf F6 + Ergebnis = bewegeSpringer(Brett, 6, 7, 5, 5, PLAYER_BLACK); + TEST_ASSERT_TRUE(Ergebnis); + TEST_ASSERT_EQUAL_CHAR('n', Brett[5][5]); + + Schachbrettspeicher_freigeben(Brett); +} #endif // TEST