diff --git a/src/En_Passaut.c b/src/En_Passaut.c new file mode 100644 index 0000000..5bb17a9 --- /dev/null +++ b/src/En_Passaut.c @@ -0,0 +1,33 @@ +#include +#include +#include +#include "spieler.h" +#include "Moving.h" +#include "Bauer.h" +#include "Historie.h" + +bool ist_En_Passaut_erlaubt_Bauer(char** Brett, int startX, int startY, int endX, int endY, Player player + ,int anzahl_Zuege, int** Historie) { + + 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])) + && ((endX == startX + 1) || (endX == startX - 1))){ + printf("Kein Fehler nach X-Verschiebung"); + + if((letzteFigur == 'p') && (player == PLAYER_WHITE) && + (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; + } + } + +} + + diff --git a/src/En_Passaut.h b/src/En_Passaut.h new file mode 100644 index 0000000..64da831 --- /dev/null +++ b/src/En_Passaut.h @@ -0,0 +1,10 @@ +#ifndef BAUER_EP_H +#define BAUER_EP_H + +#include +#include "spieler.h" + +bool ist_En_Passaut_erlaubt_Bauer(char** Brett, int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege, int** Historie); + + +#endif // BAUER_EP_H diff --git a/src/Schachbrett.c b/src/Schachbrett.c index 4b3a0d7..35f0983 100644 --- a/src/Schachbrett.c +++ b/src/Schachbrett.c @@ -60,6 +60,14 @@ void print_Schachfeld(char** Brett) { printf("\n"); } +void clear_Schachbrett(char** Brett){ + for(int i = 0; i < 8 ; i++){ + for(int j = 0; j < 8 ; j++){ + Brett[i][j]=' '; + } + } +} + void Schachbrettspeicher_freigeben(char** Brett) { if (Brett == NULL) { return; diff --git a/src/Schachbrett.h b/src/Schachbrett.h index 980975d..bea934c 100644 --- a/src/Schachbrett.h +++ b/src/Schachbrett.h @@ -4,5 +4,6 @@ char** Schachbrett_erstellen(); void print_Schachfeld(char** Brett); void Schachbrettspeicher_freigeben(char** Brett); +void clear_Schachbrett(char** Brett); #endif // SCHACHBRETT_H diff --git a/test/test_En_Passaut.c b/test/test_En_Passaut.c new file mode 100644 index 0000000..1fd58c8 --- /dev/null +++ b/test/test_En_Passaut.c @@ -0,0 +1,113 @@ +#ifdef TEST +#include "unity.h" +#include +#include "Schachbrett.h" +#include "Historie.h" +#include "En_Passaut.h" +#include "Bauer.h" +#include "Spieler.h" + +void setUp(void) { +} + +void tearDown(void) { +} + +void test_En_Passaut_Weiss(void) { + + int MAX_ZUEGE = 70; + int ZUG_INFO = 5; + + // Historie erstellen + int** meineHistorie = erstellen_historie(); + + // Testdaten + int startX = 1; + int startY = 6; + int endX = 1; + int endY = 4; + Player currentPlayer = PLAYER_BLACK; + 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 = 4; + endX = 1; + endY = 5; + currentPlayer = PLAYER_WHITE; + + + 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]); + } + +} + +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 diff --git a/test/test_Schachbrett.c b/test/test_Schachbrett.c index a331283..7e2d89e 100644 --- a/test/test_Schachbrett.c +++ b/test/test_Schachbrett.c @@ -24,4 +24,25 @@ void test_Schachbrett_erstellen(void) { } free(brett); } + +void test_Schachbrett_clearen(void) { + char** brett = Schachbrett_erstellen(); + + TEST_ASSERT_NOT_NULL(brett); + + clear_Schachbrett(brett); + + for(int i = 0; i < 8 ; i++){ + for(int j = 0; j < 8 ; j++){ + TEST_ASSERT_EQUAL(' ', brett[i][j]); + } + } + + print_Schachfeld(brett); + + for (int i = 0; i < 8; i++) { + free(brett[i]); + } + free(brett); +} #endif // TEST