diff --git a/src/Koenig.c b/src/Koenig.c index b5adbc6..0d71131 100644 --- a/src/Koenig.c +++ b/src/Koenig.c @@ -258,3 +258,11 @@ bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int en return true; } +void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player) { + if (istzugerlaubt_Koenig(Brett, startX, startY, endX, endY, player)) { + + char Koenig = player == PLAYER_WHITE ? 'K' : 'k'; + Brett[endY][endX] = Koenig; + Brett[startY][startX] = ' '; + } +} diff --git a/src/Koenig.h b/src/Koenig.h index 9828d82..d2cfede 100644 --- a/src/Koenig.h +++ b/src/Koenig.h @@ -10,4 +10,5 @@ bool GreiftKoenigAn(char** Brett, int x, int y, Player player); bool istFeldUnsicher(char** Brett, int x, int y, Player player); bool istKoenigImSchach(char** Brett, Player player); bool istzugerlaubt_Koenig(char** Brett, int startX, int startY, int endX, int endY, Player player); +void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player); #endif // Koenig diff --git a/test/test_Koenig.c b/test/test_Koenig.c index 23bd7ad..0ed0ab0 100644 --- a/test/test_Koenig.c +++ b/test/test_Koenig.c @@ -45,4 +45,28 @@ void test_istzugerlaubt_Koenig_IllegalMoves(void) { Schachbrettspeicher_freigeben(Brett); } +void test_Koenigbewegung_ValidMove(void) { + char** Brett = Schachbrett_erstellen(); + Brett[4][4] = 'K'; + Player player = PLAYER_WHITE; + bewegeKoenig(Brett, 4, 4, 5, 4, player); // Bewege König von e5 zu e6 + TEST_ASSERT_EQUAL('K', Brett[4][5]); // Schauen ob der König an der neuen stelle ist + TEST_ASSERT_EQUAL(' ', Brett[4][4]); // Schauen ob die alte stelle leer ist + + + Schachbrettspeicher_freigeben(Brett); +} + +void test_Koenigbewegung_InvalidMove(void) { + char** Brett = Schachbrett_erstellen(); + Brett[4][4] = 'K'; + Player player = PLAYER_WHITE; + + bewegeKoenig(Brett, 4, 4, 6, 6, player); // Versucht illegalen Zug zu machen + + TEST_ASSERT_EQUAL('K', Brett[4][4]); // Schauen ob der König an der alten stelle ist + TEST_ASSERT_EQUAL(' ', Brett[4][6]); // Schauen ob die Zielstelle leer ist + + Schachbrettspeicher_freigeben(Brett); +} #endif // TEST