From 07e7ea5d590c375d170faaad29b5794322dbbf68 Mon Sep 17 00:00:00 2001 From: Vorname Nachname Date: Fri, 30 Oct 2026 17:59:45 +0100 Subject: [PATCH] Funktioniert. Ein Test nicht bestanden. Genauere Fehlermeldungen fehlen --- Startcode/game.c | 47 +++++++++++++++++----------------- Startcode/testwords_delims.txt | 1 - Startcode/testwords_empty.txt | 0 Startcode/testwords_simple.txt | 3 --- Startcode/words.txt | 2 +- 5 files changed, 25 insertions(+), 28 deletions(-) delete mode 100644 Startcode/testwords_delims.txt delete mode 100644 Startcode/testwords_empty.txt delete mode 100644 Startcode/testwords_simple.txt diff --git a/Startcode/game.c b/Startcode/game.c index 4d5baef..8425478 100644 --- a/Startcode/game.c +++ b/Startcode/game.c @@ -7,9 +7,8 @@ #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 #define MAX_ATTEMPTS 42 //Die Antwort auf das Leben, das Universum, alles -#define FEHLER_LAENGE_WORT -1 -#define FEHLER_SETZEN -2 -#define ERFOLG 1 +#define FEHLER_LAENGE_WORT 0 +#define FEHLER_SETZEN 0 //TODO: Spiellogik implementieren: /* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren @@ -17,6 +16,14 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char words[][MAX_WORD_LEN], unsigned int wordCount) { + for(int i = 0; i < wordCount; i++) + { + if(strlen(words[i]) > searchFieldLen) + { + return 0; + } + } + //befüllen des Arrays mit '\0' for(unsigned int i = 0; i < searchFieldLen; i++) { @@ -27,14 +34,14 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi } //erstellen von Richtungsvektoren - int dx[] = {1, 0}; - int dy[] = {0, 1}; + int dy[] = {1, 0}; + int dx[] = {0, 1}; //befüllen mit den Wörtern for(unsigned int w = 0; w < wordCount; w++) { int laenge = strlen(words[w]); //test ob Wort theoretisch reinpasst; was machen wir aber wenn ein Wort fast genauso lang ist wie das Feld? Wenn am Ende noch ein riesiges Wort eingesetzt werden soll, wird es nie reinpassen - if(laenge > searchFieldLen) + if(laenge >= searchFieldLen) { return FEHLER_LAENGE_WORT; } @@ -44,23 +51,17 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi while(!placed && attempts < MAX_ATTEMPTS) { - attempts =+ 1; - int dir = rand() % 2; //Richtung: 0 = vertikal; 1 = horizontal - int zeile = rand() % searchFieldLen; - int spalte = rand() % searchFieldLen; - - if ((dir == 0 && (zeile + laenge > searchFieldLen)) || - (dir == 1 && (spalte + laenge > searchFieldLen))) - { - continue; - } + attempts += 1; + int dir = rand() % 2; //Richtung 0 = horinzontal; 1 = verikal + int zeile = rand() % (searchFieldLen-laenge); + int spalte = rand() % (searchFieldLen-laenge); int kollision = 0; for(int i = 0; i < laenge; i++) //Kollision mit anderen Wörtern vermeiden { - int z = zeile + dy[dir] * i; - int s = spalte + dx[dir] * i; - if(salad[z][s] != '\0' && salad[z][s] != words[w][i]) + int z = zeile + dx[dir] * i; + int s = spalte + dy[dir] * i; + if((salad[z][s] != '\0') && (salad[z][s] != words[w][i])) { kollision = 1; break; @@ -71,17 +72,17 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi { for(int i = 0; i < laenge; i++) { - int z = zeile + dy[dir] * i; - int s = spalte + dx[dir] * i; + int z = zeile + dx[dir] * i; + int s = spalte + dy[dir] * i; salad[z][s] = words[w][i]; } - placed = 1; + placed += 1; } } if(!placed) //überprüft ob das Wort gesetzt wurde, wenn nicht Fehlerausgabe { - return FEHLER_SETZEN; + return placed; } } diff --git a/Startcode/testwords_delims.txt b/Startcode/testwords_delims.txt deleted file mode 100644 index e721fce..0000000 --- a/Startcode/testwords_delims.txt +++ /dev/null @@ -1 +0,0 @@ -Hund,Katze; Maus diff --git a/Startcode/testwords_empty.txt b/Startcode/testwords_empty.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Startcode/testwords_simple.txt b/Startcode/testwords_simple.txt deleted file mode 100644 index 37d7524..0000000 --- a/Startcode/testwords_simple.txt +++ /dev/null @@ -1,3 +0,0 @@ -Apfel -Banane -Kiwi \ No newline at end of file diff --git a/Startcode/words.txt b/Startcode/words.txt index 31ee099..d8df6b8 100644 --- a/Startcode/words.txt +++ b/Startcode/words.txt @@ -2,4 +2,4 @@ Yeti,Nessie Werwolf; Vampir Monster Hydra;Frankenstein Dracula;KingKong;Gremlin;Kobold,Hexe;Poltergeist -Gespenst, Oger \ No newline at end of file +Gespenst, testesttesttesttes