From 560fee08c8266d5018c0915a049a92e5be10391a Mon Sep 17 00:00:00 2001 From: manusmac Date: Wed, 29 Oct 2025 11:48:08 +0100 Subject: [PATCH] Fehler in main und game behoben (nur in Start_Mac) --- Start_Mac/game.c | 153 ++++++++++++++++++++++------------------- Start_Mac/main.c | 2 +- Start_Mac/runTests | Bin 55776 -> 55832 bytes Start_Mac/runTests.exe | Bin 107050 -> 0 bytes 4 files changed, 85 insertions(+), 70 deletions(-) delete mode 100644 Start_Mac/runTests.exe diff --git a/Start_Mac/game.c b/Start_Mac/game.c index cb725df..55f82a1 100644 --- a/Start_Mac/game.c +++ b/Start_Mac/game.c @@ -2,6 +2,7 @@ #include #include #include +#include #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 @@ -11,82 +12,96 @@ * restliche Felder mit zufälligen Buchstaben füllen */ // Creates the word salad by placing words randomly and filling empty spaces -int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char words[][MAX_WORD_LEN], unsigned int wordCount) +int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], + unsigned int searchFieldLen, + const char words[][MAX_WORD_LEN], + unsigned int wordCount) { - //Spielfeld vorbereiten -for(unsigned int i = 0; i < searchFieldLen; i++ ){ - for(unsigned int j = 0; j < searchFieldLen; j++ ){ - salad[i][j] = EMPTY_CHAR; - } -} -for (unsigned int w = 0; w < wordCount; w++){ - size_t len = strlen(words[w]); - int placed = 0; - for(int attempt = 0; attempt < MAX_RAND_TRIES_PER_WORD && !placed; attempt++){ - int horizontal = rand() % 2; - int row = rand() % searchFieldLen; - int col = rand() % searchFieldLen; - if(horizontal){ - if(col + len > searchFieldLen) continue; - - int conflict = 0; - for(size_t i = 0; i < len; i++){ - if(salad[row][col+i] != EMPTY_CHAR && salad[row][col+i] != words[w][i]){ - conflict = 1; - break; - } + // Spielfeld vorbereiten + for(unsigned int i = 0; i < searchFieldLen; i++) { + for(unsigned int j = 0; j < searchFieldLen; j++) { + salad[i][j] = EMPTY_CHAR; + } + } + + int placedWordsCount = 0; // Zähler für platzierte Wörter + + // Jedes Wort versuchen zu platzieren + for (unsigned int w = 0; w < wordCount; w++) { + size_t len = strlen(words[w]); + int placed = 0; + + for(int attempt = 0; attempt < MAX_RAND_TRIES_PER_WORD && !placed; attempt++) { + int horizontal = rand() % 2; + int row = rand() % searchFieldLen; + int col = rand() % searchFieldLen; + + if(horizontal) { + // Horizontal platzieren + if(col + len > searchFieldLen) continue; + + int conflict = 0; + for(size_t i = 0; i < len; i++) { + if(salad[row][col+i] != EMPTY_CHAR && salad[row][col+i] != words[w][i]) { + conflict = 1; + break; + } + } + + if(conflict) continue; + + for(size_t i = 0; i < len; i++) { + salad[row][col+i] = words[w][i]; + } + placed = 1; } - if(conflict) continue; - for(size_t i = 0; i < len; i++){ - salad[row][col+i] = words[w][i]; + else { + // Vertikal platzieren + if(row + len > searchFieldLen) continue; + + int conflict = 0; + for(size_t i = 0; i < len; i++) { + if(salad[row+i][col] != EMPTY_CHAR && salad[row+i][col] != words[w][i]) { + conflict = 1; + break; + } + } + + if(conflict) continue; + + for(size_t i = 0; i < len; i++) { + salad[row+i][col] = words[w][i]; + } + placed = 1; } - placed = 1; - } - else{ - if(row + len > searchFieldLen) continue; - - int conflict = 0; - for(size_t i = 0; i < len; i++){ - if(salad[row+1][col] != EMPTY_CHAR && salad[row+1][col] != words[w][i]){ - conflict = 1; - break; - } + } + + if(placed) { + placedWordsCount++; + } + } + + // Leere Felder mit zufälligen Buchstaben befüllen + for(unsigned int i = 0; i < searchFieldLen; i++) { + for(unsigned int j = 0; j < searchFieldLen; j++) { + if (salad[i][j] == EMPTY_CHAR) { + salad[i][j] = 'A' + rand() % 26; } - if(conflict) continue; - for(size_t i = 0; i < len; i++){ - salad[row+1][col] = words[w][i]; - } - placed = 1; - } - } - } - - - /* code */ - - - //leere Felder mit zufälligen Buchstaben befüllen - for(unsigned int i = 0; i < searchFieldLen; i++ ){ - for(unsigned int j = 0; j < searchFieldLen; j++ ){ - if (salad[i][j] == EMPTY_CHAR) { - salad[i][j] = 'A' + rand() % 26; - - - } - - } - -} + } + } + + return placedWordsCount; // Rückgabewert wie viele Wörter eingefügt wurden } // Prints the word salad to console -void showWordSalad(const char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen) +void showWordSalad(const char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], + unsigned int searchFieldLen) { - for (int i=0; i < searchFieldLen; i++) { - for (int j=0; j < searchFieldLen; j++) { - printf("$c",salad[i][j]); + for (int i = 0; i < searchFieldLen; i++) { + for (int j = 0; j < searchFieldLen; j++) { + printf("%c", salad[i][j]); printf(" "); - } - printf ("\n"); - } + } + printf("\n"); + } } \ No newline at end of file diff --git a/Start_Mac/main.c b/Start_Mac/main.c index dc63f7c..1e1f25a 100644 --- a/Start_Mac/main.c +++ b/Start_Mac/main.c @@ -42,7 +42,7 @@ int main(int argc, char *argv[]) if(placedWords == wordCount) { // Start the game if successful - startGame(wordSalad,SALAD_SIZE,words,wordCount,SALAD_SIZE); + startGame(wordSalad,SALAD_SIZE,words,wordCount,900); // welche Variable wird für windowWidth gewählt? } else diff --git a/Start_Mac/runTests b/Start_Mac/runTests index 17417bb8f8315a6a29dac348549ddc9f9fbdb612..d028b51e1bfe7022725e9984271010a39b7fb6e5 100755 GIT binary patch delta 3320 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 diff --git a/Start_Mac/runTests.exe b/Start_Mac/runTests.exe deleted file mode 100644 index 8a3a77b9ba40aa1f70928c0319c4a14acf60b0d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107050 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