diff --git a/src/En_Passaut.c b/src/En_Passaut.c index d7dcfc7..5bb17a9 100644 --- a/src/En_Passaut.c +++ b/src/En_Passaut.c @@ -11,19 +11,23 @@ bool ist_En_Passaut_erlaubt_Bauer(char** Brett, int startX, int startY, int endX char letzteFigur = Brett[Historie[anzahl_Zuege-1][3]][Historie[anzahl_Zuege-1][2]]; - if((startX + 1 == Historie[anzahl_Zuege-1][0])||(startX - 1 == Historie[anzahl_Zuege-1][0])){ + if(((startX + 1 == Historie[anzahl_Zuege-1][0])||(startX - 1 == Historie[anzahl_Zuege-1][0])) + && ((endX == startX + 1) || (endX == startX - 1))){ printf("Kein Fehler nach X-Verschiebung"); + if((letzteFigur == 'p') && (player == PLAYER_WHITE) && - (Historie[anzahl_Zuege-1][3] == Historie[anzahl_Zuege-1][1] - 2)){ + (Historie[anzahl_Zuege-1][3] == 4) && (Historie[anzahl_Zuege-1][1] == 6)){ + + return true; + }else if ((letzteFigur == 'P') && (player == PLAYER_BLACK) && + (Historie[anzahl_Zuege-1][3] == 3) && (Historie[anzahl_Zuege-1][1] == 1)){ return true; }else{ - return false; + return false; } } - - } diff --git a/test/test_En_Passaut.c b/test/test_En_Passaut.c index def5cb4..1fd58c8 100644 --- a/test/test_En_Passaut.c +++ b/test/test_En_Passaut.c @@ -41,7 +41,7 @@ void test_En_Passaut_Weiss(void) { anzahl_Zuege++; startX = 2; startY = 4; - endX = 2; + endX = 1; endY = 5; currentPlayer = PLAYER_WHITE; @@ -61,5 +61,53 @@ void test_En_Passaut_Weiss(void) { } +void test_En_Passaut_Schwarz(void) { + + int MAX_ZUEGE = 70; + int ZUG_INFO = 5; + + // Historie erstellen + int** meineHistorie = erstellen_historie(); + + // Testdaten + int startX = 1; + int startY = 1; + int endX = 1; + int endY = 3; + Player currentPlayer = PLAYER_WHITE; + int anzahl_Zuege = 0; + + // Züge zur Historie hinzufügen + hinzufuegen_historie(meineHistorie, startX, startY, endX, endY, currentPlayer, anzahl_Zuege); + + char** brett = Schachbrett_erstellen(); + clear_Schachbrett(brett); + + TEST_ASSERT_NOT_NULL(brett); + + brett[endY][endX] = 'P'; + anzahl_Zuege++; + startX = 2; + startY = 3; + endX = 1; + endY = 2; + currentPlayer = PLAYER_BLACK; + + + TEST_ASSERT_TRUE(ist_En_Passaut_erlaubt_Bauer(brett,startX,startY,endX,endY,currentPlayer,anzahl_Zuege,meineHistorie)); + + + for (int i = 0; i < 8; i++) { + free(brett[i]); + } + free(brett); + + // Speicher freigeben + for (int i = 0; i < MAX_ZUEGE; i++) { + free(meineHistorie[i]); + } + +} + #endif // TEST