diff --git a/Startcode/game.c b/Startcode/game.c index 868f39a..394c2e7 100644 --- a/Startcode/game.c +++ b/Startcode/game.c @@ -18,111 +18,108 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi int startpoint_x, startpoint_y, direction, possible, tries; - for(int i = 0; i < MAX_SEARCH_FIELD_LEN; i++){ - for(int j = 0; j < MAX_SEARCH_FIELD_LEN; j++){ - salad[i][j] = '0'; + for(int i = 0; i < searchFieldLen; i++){ + for(int j = 0; j < searchFieldLen; j++){ + salad[i][j] = EMPTY_CHAR; } } for(int i = 0; i < wordCount; i++){ - possible = 0; - tries = 0; - while(possible == 0 && tries <= MAX_RAND_TRIES_PER_WORD){ - direction = rand() % 4; - - switch(direction){ - case 0: //X-Positiv - startpoint_x = rand() % (searchFieldLen - strlen(words [i])) + 1; - startpoint_y = rand() % searchFieldLen; - for(int j = 0; j < strlen(words[i]); j++){ - if(salad[startpoint_x + j][startpoint_y] != '0'){ - possible = 0; + if(strlen(words[i]) <= searchFieldLen){ + possible = 0; + tries = 0; + while(possible == 0 && tries < MAX_RAND_TRIES_PER_WORD){ + direction = rand() % 4; + possible = 1; + switch(direction){ + case 0: //X-Positiv + startpoint_x = rand() % (searchFieldLen - strlen(words[i]) + 1); + startpoint_y = rand() % searchFieldLen; + for(int j = 0; j < strlen(words[i]); j++){ + if(salad[startpoint_x + j][startpoint_y] != EMPTY_CHAR){ + possible = 0; + break; + } + } + + if(possible == 0){ + tries += 1; break; } - else { - possible = 1; + + for(int j = 0; j < strlen(words[i]); j++){ + salad[startpoint_x + j][startpoint_y] = words[i][j]; } - } - - if(possible = 0){ - tries += 1; break; - } - - for(int j = 0; j < strlen(words[i]); j++){ - salad[startpoint_x + j][startpoint_y] = Words[i][j] - } - break; - case 1: //X-Negativ - startpoint_x = searchFieldLen - rand() % (searchFieldLen - strlen(words [i])) + 1; - startpoint_y = rand() % searchFieldLen; - for(int j = 0; j < strlen(words[i]); j++){ - if(salad[startpoint_x - j][startpoint_y] != '0'){ - possible = 0; + case 1: //X-Negativ + startpoint_x = strlen(words[i]) - 1 + rand() % (searchFieldLen - strlen(words[i]) + 1); + startpoint_y = rand() % searchFieldLen; + for(int j = 0; j < strlen(words[i]); j++){ + if(salad[startpoint_x - j][startpoint_y] != EMPTY_CHAR){ + possible = 0; + break; + } + } + + if(possible == 0){ + tries += 1; break; } - else { - possible = 1; + + for(int j = 0; j < strlen(words[i]); j++){ + salad[startpoint_x - j][startpoint_y] = words[i][j]; } - } - - if(possible = 0){ - tries += 1; break; - } - - for(int j = 0; j < strlen(words[i]); j++){ - salad[startpoint_x - j][startpoint_y] = Words[i][j] - } - break; - case 2: //Y-Positiv - startpoint_x = rand() % searchFieldLen; - startpoint_y = rand() % (searchFieldLen - strlen(words [i])) + 1; - for(int j = 0; j < strlen(words[i]); j++){ - if(salad[startpoint_x][startpoint_y + j] != '0'){ - possible = 0; + case 2: //Y-Positiv + startpoint_x = rand() % searchFieldLen; + startpoint_y = rand() % (searchFieldLen - strlen(words[i]) + 1); + for(int j = 0; j < strlen(words[i]); j++){ + if(salad[startpoint_x][startpoint_y + j] != EMPTY_CHAR){ + possible = 0; + break; + } + } + + if(possible == 0){ + tries += 1; break; } - else { - possible = 1; - } - } - if(possible = 0){ - tries += 1; + for(int j = 0; j < strlen(words[i]); j++){ + salad[startpoint_x ][startpoint_y + j] = words[i][j]; + } break; - } - - for(int j = 0; j < strlen(words[i]); j++){ - salad[startpoint_x ][startpoint_y + j] = Words[i][j] - } - break; - case 3: //Y-Negativ - startpoint_x = rand() % searchFieldLen; - startpoint_y = searchFieldLen - rand() % (searchFieldLen - strlen(words [i])) + 1; - for(int j = 0; j < strlen(words[i]); j++){ - if(salad[startpoint_x][startpoint_y - j] != '0'){ - possible = 0; + case 3: //Y-Negativ + startpoint_x = rand() % searchFieldLen; + startpoint_y = strlen(words[i]) - 1 + rand() % (searchFieldLen - strlen(words[i]) + 1); + for(int j = 0; j < strlen(words[i]); j++){ + if(salad[startpoint_x][startpoint_y - j] != EMPTY_CHAR){ + possible = 0; + break; + } + } + + if(possible == 0){ + tries += 1; break; } - else { - possible = 1; - } - } - - if(possible = 0){ - tries += 1; - break; - } - for(int j = 0; j < strlen(words[i]); j++){ - salad[startpoint_x][startpoint_y - j] = Words[i][j] - } - break; + for(int j = 0; j < strlen(words[i]); j++){ + salad[startpoint_x][startpoint_y - j] = words[i][j]; + } + break; + } + } + + } + } + + for(int i = 0; i < searchFieldLen; i++){ + for(int j = 0; j < searchFieldLen; j++){ + if(salad[i][j] == EMPTY_CHAR){ + salad[i][j] = rand() % 26 + 'A'; } } - } - - + return 0; }