diff --git a/Start_Mac/runTests b/Start_Mac/runTests index d028b51..c46ee07 100755 Binary files a/Start_Mac/runTests and b/Start_Mac/runTests differ diff --git a/Start_Windows/game.c b/Start_Windows/game.c index cb725df..55f82a1 100644 --- a/Start_Windows/game.c +++ b/Start_Windows/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_Windows/main.c b/Start_Windows/main.c index 0175942..e61addf 100644 --- a/Start_Windows/main.c +++ b/Start_Windows/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,800); } else {