diff --git a/src/Koenig.c b/src/Koenig.c index 0d71131..838fe3b 100644 --- a/src/Koenig.c +++ b/src/Koenig.c @@ -5,6 +5,7 @@ #include "spieler.h" #include "Moving.h" #include "Koenig.h" +#include "Spielstatus.h" bool GreiftBauerAn(char** Brett, int x, int y, Player player) { // Checke für weißen Bauer @@ -258,11 +259,17 @@ 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) { +void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player, Spielstatus* status) { if (istzugerlaubt_Koenig(Brett, startX, startY, endX, endY, player)) { char Koenig = player == PLAYER_WHITE ? 'K' : 'k'; Brett[endY][endX] = Koenig; Brett[startY][startX] = ' '; + + if (player == PLAYER_WHITE) { + status->BewegteSichWeißerKoenig = true; + } else { + status->BewegteSichSchwarzerKoenig = true; + } } } diff --git a/src/Koenig.h b/src/Koenig.h index d2cfede..f3bcf6f 100644 --- a/src/Koenig.h +++ b/src/Koenig.h @@ -1,6 +1,7 @@ #ifndef Koenig #define Koenig #include "Spieler.h" +#include "Spielstatus.h" bool GreiftBauerAn(char** Brett, int x, int y, Player player); bool GreiftTurmAn(char** Brett, int x, int y, Player player); bool GreiftSpringerAn(char** Brett, int x, int y, Player player); @@ -10,5 +11,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); +void bewegeKoenig(char** Brett, int startX, int startY, int endX, int endY, Player player, Spielstatus* status); #endif // Koenig diff --git a/test/test_Koenig.c b/test/test_Koenig.c index 0ed0ab0..4974f90 100644 --- a/test/test_Koenig.c +++ b/test/test_Koenig.c @@ -6,6 +6,7 @@ #include "Spieler.h" #include "Schachbrett.h" #include "Koenig.h" +#include "Spielstatus.h" void test_istzugerlaubt_Koenig_LegalMoves(void) { @@ -47,26 +48,30 @@ void test_istzugerlaubt_Koenig_IllegalMoves(void) { } void test_Koenigbewegung_ValidMove(void) { char** Brett = Schachbrett_erstellen(); + Spielstatus status; + initalisiereSpielstatus(&status); Brett[4][4] = 'K'; Player player = PLAYER_WHITE; - bewegeKoenig(Brett, 4, 4, 5, 4, player); // Bewege König von e5 zu e6 + bewegeKoenig(Brett, 4, 4, 5, 4, player,&status); // 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 - + TEST_ASSERT_TRUE(status.BewegteSichWeißerKoenig);//Schauen ob sich passend der spielstatus ändert Schachbrettspeicher_freigeben(Brett); } void test_Koenigbewegung_InvalidMove(void) { char** Brett = Schachbrett_erstellen(); + Spielstatus status; + initalisiereSpielstatus(&status); Brett[4][4] = 'K'; Player player = PLAYER_WHITE; - bewegeKoenig(Brett, 4, 4, 6, 6, player); // Versucht illegalen Zug zu machen + bewegeKoenig(Brett, 4, 4, 6, 6, player,&status); // 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 - + TEST_ASSERT_FALSE(status.BewegteSichWeißerKoenig);//Schauen ob sich der spielstatus passend verhält Schachbrettspeicher_freigeben(Brett); } #endif // TEST