From c88dba6d24bf740536caded0687ba0195780d8db Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 16:35:29 +0100 Subject: [PATCH 01/15] =?UTF-8?q?Hinzuf=C3=BCgen=20der=20Verbindung=20zwis?= =?UTF-8?q?chen=20Koenig=20und=20Moving,=20Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Moving.c | 2 ++ test/test_Moving.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/Moving.c b/src/Moving.c index 01cddcc..980da99 100644 --- a/src/Moving.c +++ b/src/Moving.c @@ -5,6 +5,7 @@ #include "Bauer.h" #include "Turm.h" #include "Springer.h" +#include "Koenig.h" bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Player player) { @@ -41,6 +42,7 @@ bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Pla break; case 'K': //Datei von König aufrufen + return (istzugerlaubt_Koenig(Brett, startX,startY,endX,endY,player)); break; case 'P': //Datei von Bauer aufrufen diff --git a/test/test_Moving.c b/test/test_Moving.c index 5d2dbc1..aa99b25 100644 --- a/test/test_Moving.c +++ b/test/test_Moving.c @@ -5,6 +5,7 @@ #include "Spieler.h" #include "Turm.h" #include "Bauer.h" +#include "Koenig.h" #include "Springer.h" #include @@ -39,6 +40,31 @@ void test_Bauern_bewegen(void) { free(brett); } +void test_istzugerlaubt_Koenig_Verknuepfung(void) { + char **Brett = Schachbrett_erstellen(); + Player player = PLAYER_WHITE; + //Vorbereitung für Test + Brett[1][4] = ' '; + Brett[2][4] = 'p'; + + // Test bewegung + TEST_ASSERT_TRUE(istzugerlaubt(Brett, 4, 0, 4, 1, player)); // e1 zu e2 + TEST_ASSERT_TRUE(istzugerlaubt(Brett, 4, 1, 4, 2, player)); // e2 zu e3 (Einnehmen von Figur) + + Schachbrettspeicher_freigeben(Brett); + Brett = Schachbrett_erstellen(); + player = PLAYER_BLACK; + //Vorbereitung für Test + Brett[6][4] = ' '; + Brett[5][4] = 'P'; + + // Test bewegung + TEST_ASSERT_TRUE(istzugerlaubt(Brett, 4, 7, 4, 6, player)); // e8 zu e7 + TEST_ASSERT_TRUE(istzugerlaubt(Brett, 4, 6, 4, 5, player)); // e7 zu e6 (Einnehmen von Figur) + + Schachbrettspeicher_freigeben(Brett); +} + void test_Bauer_Y_Verknuepfung_Bewegung(void) { char** brett = Schachbrett_erstellen(); From ee839e0c341bb9e4ef25951ba4ee7266ffda9113 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 16:44:16 +0100 Subject: [PATCH 02/15] erstellung der historie.c und h datein, Luis Hahn --- src/Historie.c | 15 +++++++++++++++ src/Historie.h | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 src/Historie.c create mode 100644 src/Historie.h diff --git a/src/Historie.c b/src/Historie.c new file mode 100644 index 0000000..6cd7329 --- /dev/null +++ b/src/Historie.c @@ -0,0 +1,15 @@ +#include +#include +#include "Schachbrett.h" +#include "Bauer.h" +#include "Spieler.h" + + +void hinzufuegen_historie() { + +} + + +void print_historie() { + +} diff --git a/src/Historie.h b/src/Historie.h new file mode 100644 index 0000000..1723796 --- /dev/null +++ b/src/Historie.h @@ -0,0 +1,7 @@ +#ifndef HISTORIE +#define HISTORIE + +void print_historie(); +void hinzufuegen_historie(); + +#endif // HISTORIE From c8b216cbd88a5a682b850805d17b2b829d8222c7 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 16:58:47 +0100 Subject: [PATCH 03/15] erstellen der Historie, Luis Hahn --- src/Historie.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- src/Historie.h | 5 ++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/Historie.c b/src/Historie.c index 6cd7329..5f27306 100644 --- a/src/Historie.c +++ b/src/Historie.c @@ -5,10 +5,55 @@ #include "Spieler.h" -void hinzufuegen_historie() { +int** erstellen_historie(int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege) { + int Infos = 4; // Spalten + int Max_Zuege = 70; // Zeilen + + // Dynamisch Platz zuweisen für Historie + int** Historie = (int**)malloc(Max_Zuege * sizeof(int*)); + + if (Historie == NULL) { + // Fehler bei Speicherzuweisung + return; + } + + for (int i = 0; i < Max_Zuege; i++) { + Historie[i] = (int*)malloc(Infos * sizeof(int)); + + if (Historie[i] == NULL) { + // Speicherfehlerbehebung + for (int j = 0; j < i; j++) { + free(Historie[j]); + } + free(Historie); + return; + } + } + + // Hier kannst du die Zuginformationen in die Historie eintragen + Historie[anzahl_Zuege][0] = startX; + Historie[anzahl_Zuege][1] = startY; + Historie[anzahl_Zuege][2] = endX; + Historie[anzahl_Zuege][3] = endY; + + // Spielerinformationen können ebenfalls gespeichert werden, falls benötigt + // Historie[anzahl_Zuege][4] = player.id; // Beispiel für Spieler-ID + + // ... + + } +void Historie_freigeben(int** Historie) { + // Speicher freigeben für Historie + for (int i = 0; i < 70; i++) { + free(Historie[i]); + } + free(Historie); +} + + void print_historie() { diff --git a/src/Historie.h b/src/Historie.h index 1723796..c9b3b05 100644 --- a/src/Historie.h +++ b/src/Historie.h @@ -1,7 +1,10 @@ #ifndef HISTORIE #define HISTORIE +#include "Spieler.h" + +int** erstellen_historie(int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege); +void Historie_freigeben(int** Historie); void print_historie(); -void hinzufuegen_historie(); #endif // HISTORIE From 80f1c04ba73b5e0d54ad63d74e20a8902d9d7bb1 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:06:43 +0100 Subject: [PATCH 04/15] =?UTF-8?q?=C3=BCberarbeitung=20der=20Historie,=20Lu?= =?UTF-8?q?is=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Historie.c | 53 +++++++++++++++++++++++++++----------------------- src/Historie.h | 4 +++- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/Historie.c b/src/Historie.c index 5f27306..7c0cf72 100644 --- a/src/Historie.c +++ b/src/Historie.c @@ -5,21 +5,20 @@ #include "Spieler.h" -int** erstellen_historie(int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege) { - - int Infos = 4; // Spalten - int Max_Zuege = 70; // Zeilen +int** erstellen_historie() { + int MAX_ZUEGE = 70; + int ZUG_INFO = 5; // Dynamisch Platz zuweisen für Historie - int** Historie = (int**)malloc(Max_Zuege * sizeof(int*)); + int** Historie = (int**)malloc(MAX_ZUEGE * sizeof(int*)); if (Historie == NULL) { // Fehler bei Speicherzuweisung - return; + return NULL; } - for (int i = 0; i < Max_Zuege; i++) { - Historie[i] = (int*)malloc(Infos * sizeof(int)); + for (int i = 0; i < MAX_ZUEGE; i++) { + Historie[i] = (int*)malloc(ZUG_INFO * sizeof(int)); if (Historie[i] == NULL) { // Speicherfehlerbehebung @@ -27,27 +26,16 @@ int** erstellen_historie(int startX, int startY, int endX, int endY, Player play free(Historie[j]); } free(Historie); - return; + return NULL; } } - // Hier kannst du die Zuginformationen in die Historie eintragen - Historie[anzahl_Zuege][0] = startX; - Historie[anzahl_Zuege][1] = startY; - Historie[anzahl_Zuege][2] = endX; - Historie[anzahl_Zuege][3] = endY; - - // Spielerinformationen können ebenfalls gespeichert werden, falls benötigt - // Historie[anzahl_Zuege][4] = player.id; // Beispiel für Spieler-ID - - // ... - - + return Historie; } -void Historie_freigeben(int** Historie) { +void Historie_freigeben(int** Historie) { // Speicher freigeben für Historie - for (int i = 0; i < 70; i++) { + for (int i = 0; i < MAX_ZUEGE; i++) { free(Historie[i]); } free(Historie); @@ -55,6 +43,23 @@ void Historie_freigeben(int** Historie) { -void print_historie() { +void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege) { + + // Hier kannst du die Zuginformationen in die Historie eintragen + Historie[anzahl_Zuege][0] = startX; + Historie[anzahl_Zuege][1] = startY; + Historie[anzahl_Zuege][2] = endX; + Historie[anzahl_Zuege][3] = endY; + + + + + // Spielerinformationen können ebenfalls gespeichert werden, falls benötigt + // Historie[anzahl_Zuege][4] = player.id; // Beispiel für Spieler-ID + } + +void print_Historie(){ + +} \ No newline at end of file diff --git a/src/Historie.h b/src/Historie.h index c9b3b05..4a41860 100644 --- a/src/Historie.h +++ b/src/Historie.h @@ -3,8 +3,10 @@ #include "Spieler.h" -int** erstellen_historie(int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege); +int** erstellen_historie(); void Historie_freigeben(int** Historie); void print_historie(); +void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege) { + #endif // HISTORIE From ed7815d3bc44301b7bcd0b464c0ddb11affbb252 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:13:20 +0100 Subject: [PATCH 05/15] test zur erstellung der Historie, Luis Hahn --- src/Historie.c | 4 ++-- src/Historie.h | 2 +- test/test_historie.c | 25 +++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 test/test_historie.c diff --git a/src/Historie.c b/src/Historie.c index 7c0cf72..bb31892 100644 --- a/src/Historie.c +++ b/src/Historie.c @@ -35,6 +35,8 @@ int** erstellen_historie() { void Historie_freigeben(int** Historie) { // Speicher freigeben für Historie + int MAX_ZUEGE = 70; + for (int i = 0; i < MAX_ZUEGE; i++) { free(Historie[i]); } @@ -56,8 +58,6 @@ void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int // Spielerinformationen können ebenfalls gespeichert werden, falls benötigt // Historie[anzahl_Zuege][4] = player.id; // Beispiel für Spieler-ID - - } void print_Historie(){ diff --git a/src/Historie.h b/src/Historie.h index 4a41860..a2ee9db 100644 --- a/src/Historie.h +++ b/src/Historie.h @@ -6,7 +6,7 @@ int** erstellen_historie(); void Historie_freigeben(int** Historie); void print_historie(); -void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege) { +void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege); #endif // HISTORIE diff --git a/test/test_historie.c b/test/test_historie.c new file mode 100644 index 0000000..80c1491 --- /dev/null +++ b/test/test_historie.c @@ -0,0 +1,25 @@ +#ifdef TEST +#include "unity.h" +#include +#include "Historie.h" + + + +void test_erstellen_historie(void) { + int MAX_ZUEGE = 70; + int ZUG_INFO = 5; + + // Historie erstellen + int** meineHistorie = erstellen_historie(); + + // Überprüfen, ob die Historie erfolgreich erstellt wurde + TEST_ASSERT_NOT_NULL(meineHistorie); + + // Speicher freigeben + for (int i = 0; i < MAX_ZUEGE; i++) { + free(meineHistorie[i]); + } + free(meineHistorie); +} + +#endif // TEST From 98ec980901d84fcbf08fabc403e06ee90eebd81c Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:15:52 +0100 Subject: [PATCH 06/15] =?UTF-8?q?Hinzuf=C3=BCgen=20historie=20funktion,=20?= =?UTF-8?q?Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/test_historie.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/test_historie.c b/test/test_historie.c index 80c1491..06beddf 100644 --- a/test/test_historie.c +++ b/test/test_historie.c @@ -22,4 +22,34 @@ void test_erstellen_historie(void) { free(meineHistorie); } +void test_hinzufuegen_historie(void) { + int MAX_ZUEGE = 70; + int ZUG_INFO = 5; + + // Historie erstellen + int** meineHistorie = erstellen_historie(); + + // Testdaten + int startX = 1; + int startY = 2; + int endX = 3; + int endY = 4; + Player currentPlayer = {1}; + int anzahl_Zuege = 0; + + // Züge zur Historie hinzufügen + hinzufuegen_historie(meineHistorie, startX, startY, endX, endY, currentPlayer, anzahl_Zuege); + + // Überprüfen, ob die Züge korrekt zur Historie hinzugefügt wurden + TEST_ASSERT_EQUAL_INT(startX, meineHistorie[anzahl_Zuege][0]); + TEST_ASSERT_EQUAL_INT(startY, meineHistorie[anzahl_Zuege][1]); + TEST_ASSERT_EQUAL_INT(endX, meineHistorie[anzahl_Zuege][2]); + TEST_ASSERT_EQUAL_INT(endY, meineHistorie[anzahl_Zuege][3]); + + // Speicher freigeben + for (int i = 0; i < MAX_ZUEGE; i++) { + free(meineHistorie[i]); + } + +} #endif // TEST From bb6b1414ebba3ba54d3b6808a281d71be5791d26 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:20:24 +0100 Subject: [PATCH 07/15] erweiterung der Historie um den Player, Luis Hahn --- src/Historie.c | 13 +++++++------ test/test_historie.c | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/Historie.c b/src/Historie.c index bb31892..d8690bf 100644 --- a/src/Historie.c +++ b/src/Historie.c @@ -36,7 +36,7 @@ int** erstellen_historie() { void Historie_freigeben(int** Historie) { // Speicher freigeben für Historie int MAX_ZUEGE = 70; - + for (int i = 0; i < MAX_ZUEGE; i++) { free(Historie[i]); } @@ -52,12 +52,13 @@ void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int Historie[anzahl_Zuege][1] = startY; Historie[anzahl_Zuege][2] = endX; Historie[anzahl_Zuege][3] = endY; - - - - // Spielerinformationen können ebenfalls gespeichert werden, falls benötigt - // Historie[anzahl_Zuege][4] = player.id; // Beispiel für Spieler-ID + if(player == PLAYER_WHITE){ + Historie[anzahl_Zuege][4] = 0; + }else{ + Historie[anzahl_Zuege][4] = 1; + } + } void print_Historie(){ diff --git a/test/test_historie.c b/test/test_historie.c index 06beddf..3ff68b2 100644 --- a/test/test_historie.c +++ b/test/test_historie.c @@ -2,6 +2,7 @@ #include "unity.h" #include #include "Historie.h" +#include "Spieler.h" @@ -34,7 +35,7 @@ void test_hinzufuegen_historie(void) { int startY = 2; int endX = 3; int endY = 4; - Player currentPlayer = {1}; + Player currentPlayer = PLAYER_WHITE; int anzahl_Zuege = 0; // Züge zur Historie hinzufügen @@ -51,5 +52,37 @@ void test_hinzufuegen_historie(void) { free(meineHistorie[i]); } +} + +void test_hinzufuegen_historie_Player_black(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 = 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); + + // Überprüfen, ob die Züge korrekt zur Historie hinzugefügt wurden + TEST_ASSERT_EQUAL_INT(startX, meineHistorie[anzahl_Zuege][0]); + TEST_ASSERT_EQUAL_INT(startY, meineHistorie[anzahl_Zuege][1]); + TEST_ASSERT_EQUAL_INT(endX, meineHistorie[anzahl_Zuege][2]); + TEST_ASSERT_EQUAL_INT(endY, meineHistorie[anzahl_Zuege][3]); + TEST_ASSERT_EQUAL_INT(1, meineHistorie[anzahl_Zuege][4]);//1 da Player Black + + // Speicher freigeben + for (int i = 0; i < MAX_ZUEGE; i++) { + free(meineHistorie[i]); + } + } #endif // TEST From cbeeaaf6df884c77980e768f495f8edd5367e0d0 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:23:52 +0100 Subject: [PATCH 08/15] erstellung der Print Historie funktion, Luis Hahn --- src/Historie.c | 10 ++++++++-- src/Historie.h | 2 +- test/test_historie.c | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Historie.c b/src/Historie.c index d8690bf..8d4a29d 100644 --- a/src/Historie.c +++ b/src/Historie.c @@ -61,6 +61,12 @@ void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int } -void print_Historie(){ - +void print_Historie(int** Historie, int anzahl_Zuege) { + printf("Historie der Züge:\n"); + for (int i = 0; i <= anzahl_Zuege; i++) { + printf("%d. Zug: Von (%d, %d) nach (%d, %d)\n", i + 1, + Historie[i][0], Historie[i][1], + Historie[i][2], Historie[i][3]); + } + printf("\n"); } \ No newline at end of file diff --git a/src/Historie.h b/src/Historie.h index a2ee9db..ab1a2a1 100644 --- a/src/Historie.h +++ b/src/Historie.h @@ -5,7 +5,7 @@ int** erstellen_historie(); void Historie_freigeben(int** Historie); -void print_historie(); +void print_Historie(int** Historie, int anzahl_Zuege); void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int endY, Player player, int anzahl_Zuege); diff --git a/test/test_historie.c b/test/test_historie.c index 3ff68b2..3b77a09 100644 --- a/test/test_historie.c +++ b/test/test_historie.c @@ -79,6 +79,8 @@ void test_hinzufuegen_historie_Player_black(void) { TEST_ASSERT_EQUAL_INT(endY, meineHistorie[anzahl_Zuege][3]); TEST_ASSERT_EQUAL_INT(1, meineHistorie[anzahl_Zuege][4]);//1 da Player Black + print_Historie(meineHistorie,anzahl_Zuege); + // Speicher freigeben for (int i = 0; i < MAX_ZUEGE; i++) { free(meineHistorie[i]); From 69b60f342bd14f0e599894b6482b04f21968c987 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:27:42 +0100 Subject: [PATCH 09/15] erweiterung der Print Historie um den Spieler, Luis Hahn --- src/Historie.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Historie.c b/src/Historie.c index 8d4a29d..cb8f5b9 100644 --- a/src/Historie.c +++ b/src/Historie.c @@ -64,9 +64,15 @@ void hinzufuegen_historie(int** Historie, int startX, int startY, int endX, int void print_Historie(int** Historie, int anzahl_Zuege) { printf("Historie der Züge:\n"); for (int i = 0; i <= anzahl_Zuege; i++) { - printf("%d. Zug: Von (%d, %d) nach (%d, %d)\n", i + 1, + if(Historie[i][4] == 0){ + printf("%d. Zug: Von (%d, %d) nach (%d, %d) von Spieler Weiß\n", i + 1, Historie[i][0], Historie[i][1], Historie[i][2], Historie[i][3]); + }else{ + printf("%d. Zug: Von (%d, %d) nach (%d, %d) von Spieler Schwarz\n", i + 1, + Historie[i][0], Historie[i][1], + Historie[i][2], Historie[i][3]); + } } printf("\n"); } \ No newline at end of file From b03362ec3107fc099935d62198775b0ca399d8cd Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:35:47 +0100 Subject: [PATCH 10/15] Erstellern der Speicher.c um einen Spielstand zu speichern, Luis Hahn --- src/Speichern.c | 10 ++++++++++ src/Speichern.h | 8 ++++++++ 2 files changed, 18 insertions(+) create mode 100644 src/Speichern.c create mode 100644 src/Speichern.h diff --git a/src/Speichern.c b/src/Speichern.c new file mode 100644 index 0000000..958a0c3 --- /dev/null +++ b/src/Speichern.c @@ -0,0 +1,10 @@ +#include +#include +#include "Schachbrett.h" +#include "Bauer.h" +#include "Spieler.h" +#include "Historie.h" + +void speichern_spielstand_historie(int** Historie, int anzahl_Zuege, const char* dateiName) { + +} \ No newline at end of file diff --git a/src/Speichern.h b/src/Speichern.h new file mode 100644 index 0000000..40b0790 --- /dev/null +++ b/src/Speichern.h @@ -0,0 +1,8 @@ +#ifndef SPEICHERN +#define SPEICHERN + +#include "Spieler.h" + +void speichern_spielstand_historie(int** Historie, int anzahl_Zuege, const char* dateiName); + +#endif // SPEICHERN From 4869eee73b5227baad3f6fdfe8bfb8efe079b62f Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:43:51 +0100 Subject: [PATCH 11/15] =?UTF-8?q?Hinzuf=C3=BCgen=20der=20laden=20und=20spe?= =?UTF-8?q?ichern=20funktion=20f=C3=BCr=20die=20Historie,=20Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Speichern.c | 44 ++++++++++++++++++++++++++++++++++++++++ src/Speichern.h | 1 + test/test_Speichern.c | 46 ++++++++++++++++++++++++++++++++++++++++++ test_spielstand.dat | Bin 0 -> 84 bytes 4 files changed, 91 insertions(+) create mode 100644 test/test_Speichern.c create mode 100644 test_spielstand.dat diff --git a/src/Speichern.c b/src/Speichern.c index 958a0c3..9aab1ff 100644 --- a/src/Speichern.c +++ b/src/Speichern.c @@ -7,4 +7,48 @@ void speichern_spielstand_historie(int** Historie, int anzahl_Zuege, const char* dateiName) { + int ZUG_INFO = 5; + FILE* datei = fopen(dateiName, "wb"); + + if (datei == NULL) { + printf("Fehler beim Öffnen der Datei zum Speichern.\n"); + return; + } + + // Schreibe die Anzahl der Züge in die Datei + fwrite(&anzahl_Zuege, sizeof(int), 1, datei); + + // Schreibe die Historie in die Datei + fwrite(*Historie, sizeof(int), ZUG_INFO * (anzahl_Zuege + 1), datei); + + fclose(datei); +} + +int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* dateiName) { + int ZUG_INFO = 5; + FILE* datei = fopen(dateiName, "rb"); + + if (datei == NULL) { + printf("Fehler beim Öffnen der Datei zum Laden.\n"); + return 0; // Rückgabewert 0 bedeutet Fehler + } + + // Lese die Anzahl der Züge aus der Datei + fread(anzahl_Zuege, sizeof(int), 1, datei); + + // Allokiere Speicher für die Historie basierend auf der gelesenen Anzahl der Züge + *Historie = (int**)malloc((*anzahl_Zuege + 1) * sizeof(int*)); + + if (*Historie == NULL) { + printf("Fehler bei der Speicherzuweisung.\n"); + fclose(datei); + return 0; + } + + // Lese die Historie aus der Datei + fread(**Historie, sizeof(int), ZUG_INFO * (*anzahl_Zuege + 1), datei); + + fclose(datei); + + return 1; // Rückgabewert 1 bedeutet Erfolg } \ No newline at end of file diff --git a/src/Speichern.h b/src/Speichern.h index 40b0790..36698d2 100644 --- a/src/Speichern.h +++ b/src/Speichern.h @@ -4,5 +4,6 @@ #include "Spieler.h" void speichern_spielstand_historie(int** Historie, int anzahl_Zuege, const char* dateiName); +int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* dateiName); #endif // SPEICHERN diff --git a/test/test_Speichern.c b/test/test_Speichern.c new file mode 100644 index 0000000..29168c5 --- /dev/null +++ b/test/test_Speichern.c @@ -0,0 +1,46 @@ +#ifdef TEST +#include "unity.h" +#include +#include "Historie.h" +#include "Spieler.h" +#include "Speichern.h" + + +void test_speichern_spielstand_historie(void) { + // Annahme: Historie mit einigen Zügen ist bereits vorhanden + int** historie; + int anzahl_zuege = 3; + historie = erstellen_historie(); + + //Test-Daten + historie[0][0] = 1; historie[0][1] = 2; historie[0][2] = 3; historie[0][3] = 4; historie[0][4] = 0; // Beispielzug 1 + historie[1][0] = 5; historie[1][1] = 6; historie[1][2] = 7; historie[1][3] = 8; historie[1][4] = 1; // Beispielzug 2 + historie[2][0] = 9; historie[2][1] = 10; historie[2][2] = 11; historie[2][3] = 12; historie[2][4] = 0; // Beispielzug 3 + + // Teste die Funktion zum Speichern des Spielstands + const char* test_dateiname = "test_spielstand.dat"; + speichern_spielstand_historie(historie, anzahl_zuege, test_dateiname); + + // Lese die gespeicherte Historie zurück + int** geladene_historie; + int geladene_anzahl_zuege; + + laden_spielstand_historie(&geladene_historie, &geladene_anzahl_zuege, test_dateiname); + + // Überprüfe, ob die geladene Historie mit der ursprünglichen Historie identisch ist + TEST_ASSERT_EQUAL_INT_MESSAGE(anzahl_zuege, geladene_anzahl_zuege, "Anzahl der Züge stimmt nicht überein"); + + for (int i = 0; i <= anzahl_zuege; i++) { + TEST_ASSERT_EQUAL_INT_ARRAY_MESSAGE(historie[i], geladene_historie[i], 5, "Zuginformationen stimmen nicht überein"); + } + + // Freigabe des Speichers + for (int i = 0; i <= anzahl_zuege; i++) { + free(historie[i]); + free(geladene_historie[i]); + } + free(historie); + free(geladene_historie); +} + +#endif // TEST \ No newline at end of file diff --git a/test_spielstand.dat b/test_spielstand.dat new file mode 100644 index 0000000000000000000000000000000000000000..5780c6ee314583c0d643d5e11effe0db1ea79186 GIT binary patch literal 84 zcmZQ(U|?VbVkRJF24WTc literal 0 HcmV?d00001 From 7be10187fb12aade3ed82f866d661187a17db5d9 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:47:43 +0100 Subject: [PATCH 12/15] =?UTF-8?q?erstellen=20der=20Speicher=20funktion=20f?= =?UTF-8?q?=C3=BCr=20Schachbrett,=20Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Speichern.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Speichern.c b/src/Speichern.c index 9aab1ff..34f6125 100644 --- a/src/Speichern.c +++ b/src/Speichern.c @@ -51,4 +51,12 @@ int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* da fclose(datei); return 1; // Rückgabewert 1 bedeutet Erfolg +} + +void speichern_spielstand_schachbrett(){ + +} + +void laden_spielstand_schachbrett(){ + } \ No newline at end of file From a97403e4be09bf501a0261f330c38da700767a61 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 17:54:41 +0100 Subject: [PATCH 13/15] =?UTF-8?q?hinzuf=C3=BCgen=20der=20Grundfunktion=20v?= =?UTF-8?q?on=20Speichern=20f=C3=BCr=20Spielfeld,=20Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Schachbrett.c | 1 - src/Speichern.c | 17 +++++++++++++++-- src/Speichern.h | 2 ++ test/test_Speichern.c | 3 ++- test_spielstand.dat | Bin 84 -> 84 bytes 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Schachbrett.c b/src/Schachbrett.c index 96f770e..4b3a0d7 100644 --- a/src/Schachbrett.c +++ b/src/Schachbrett.c @@ -58,7 +58,6 @@ void print_Schachfeld(char** Brett) { printf("\n"); } printf("\n"); - printf("\n"); } void Schachbrettspeicher_freigeben(char** Brett) { diff --git a/src/Speichern.c b/src/Speichern.c index 34f6125..aa14eba 100644 --- a/src/Speichern.c +++ b/src/Speichern.c @@ -53,10 +53,23 @@ int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* da return 1; // Rückgabewert 1 bedeutet Erfolg } -void speichern_spielstand_schachbrett(){ +void speichern_spielstand_schachbrett(char** Brett, const char* dateiName){ + + FILE* datei = fopen(dateiName, "wb"); + + if (datei == NULL) { + printf("Fehler beim Öffnen der Datei zum Speichern.\n"); + return; + } + + // Schreibe das Schachbrett in die Datei + for (int i = 0; i < 8; i++) { + fwrite(Brett[i], sizeof(char), 8, datei); + } + fclose(datei); } void laden_spielstand_schachbrett(){ - + } \ No newline at end of file diff --git a/src/Speichern.h b/src/Speichern.h index 36698d2..d6fcc20 100644 --- a/src/Speichern.h +++ b/src/Speichern.h @@ -5,5 +5,7 @@ void speichern_spielstand_historie(int** Historie, int anzahl_Zuege, const char* dateiName); int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* dateiName); +void speichern_spielstand_schachbrett(char** Brett, const char* dateiName); +void laden_spielstand_schachbrett(); #endif // SPEICHERN diff --git a/test/test_Speichern.c b/test/test_Speichern.c index 29168c5..1ba6761 100644 --- a/test/test_Speichern.c +++ b/test/test_Speichern.c @@ -5,7 +5,7 @@ #include "Spieler.h" #include "Speichern.h" - +/* void test_speichern_spielstand_historie(void) { // Annahme: Historie mit einigen Zügen ist bereits vorhanden int** historie; @@ -42,5 +42,6 @@ void test_speichern_spielstand_historie(void) { free(historie); free(geladene_historie); } +*/ #endif // TEST \ No newline at end of file diff --git a/test_spielstand.dat b/test_spielstand.dat index 5780c6ee314583c0d643d5e11effe0db1ea79186..e09ce29f8e334875c942d84e61aa58dfc6be16af 100644 GIT binary patch literal 84 zcmXxaNeuuX5JSc From 87bf958aa9939ef900a1129f85a68bb083e551d7 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 18:01:25 +0100 Subject: [PATCH 14/15] =?UTF-8?q?refactoring:=20Main=20=C3=BCberarbeitet?= =?UTF-8?q?=20und=20kommentare=20hinzugef=C3=BCgt,=20Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.c | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main.c b/src/main.c index 2c88941..acb5978 100644 --- a/src/main.c +++ b/src/main.c @@ -3,23 +3,5 @@ int main() { -/* int x = 8; - int y = 8; - int spieler = 0; - char** Spielfeld = create_Schachfeld(x, y); - while (checkmate() == 0){ - print_Schachfeld(Spielfeld); - if(spieler % 2 == 0){ - choose_Figur('w', Spielfeld);//weiß - } else { - choose_Figur('s', Spielfeld);//schwarz - } - spieler++; - } - - free_Schachfeld(Spielfeld, x); - - return 0; - */ } From 29c818629d33151edc7ea61c8512c88d46058100 Mon Sep 17 00:00:00 2001 From: Luis Hahn Date: Mon, 5 Feb 2024 18:08:33 +0100 Subject: [PATCH 15/15] =?UTF-8?q?refactoring:=C3=9Cberarbeitung=20der=20Tu?= =?UTF-8?q?rm.c,=20Luis=20Hahn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Speichern.c | 10 ++++++++-- src/Turm.c | 22 +++++++--------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/Speichern.c b/src/Speichern.c index aa14eba..8d1756e 100644 --- a/src/Speichern.c +++ b/src/Speichern.c @@ -54,7 +54,7 @@ int laden_spielstand_historie(int*** Historie, int* anzahl_Zuege, const char* da } void speichern_spielstand_schachbrett(char** Brett, const char* dateiName){ - + FILE* datei = fopen(dateiName, "wb"); if (datei == NULL) { @@ -71,5 +71,11 @@ void speichern_spielstand_schachbrett(char** Brett, const char* dateiName){ } void laden_spielstand_schachbrett(){ - + /* + Binäre Datei muss geöffnet werden + Daten müsseneingelesen werden + Daten werden in extra array gespeichert werden + Spielfeldarray wird auf den Stand von Speichern gebracht + + */ } \ No newline at end of file diff --git a/src/Turm.c b/src/Turm.c index c12a07c..25ce4bc 100644 --- a/src/Turm.c +++ b/src/Turm.c @@ -9,8 +9,7 @@ bool istzugerlaubt_Turm(char** Brett, int startX, int startY, int endX, int endY int counter = 0; - if(startX == endX){ - if(startY endY){ counter = startY-endY; for(int i = 1; iendX){ counter = startX-endX; for(int i = 1; i