diff --git a/Start_Mac/game.c b/Start_Mac/game.c index d8cc133..300cb6d 100644 --- a/Start_Mac/game.c +++ b/Start_Mac/game.c @@ -13,11 +13,91 @@ // 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) { + srand(time(NULL)); + unsigned int placedWordsCount = 0; + //salad = spielfeld (100*100) + //searchFieldLen = salad Size = 20 + //words = array mit den zu plazierenden wörtern + //anzahl an zu plazierenden wörtern + const char buchstaben[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + const int anzahlBuchstaben = 26; + + for (int i = 0; i < wordCount; i++) { + int vertikal_horizontal = rand() % 2; //1 = vertikal //0 = horizontal + int leange = strlen(words[i]); + int positionX = 0; + int positionY = 0; + int voll = 0; + int tries = 0; + + if (vertikal_horizontal == 1) { + + tries = 0; + do { + voll = 0; + positionX = rand() % (searchFieldLen); + positionY = rand() % (searchFieldLen-leange); + for(int j = positionY; j < positionY+leange ; j++) { //überprüfung ob alle positionen 0 sind + if(salad[j][positionX] != '0') { + voll = 1; + } + } + tries++; + } while (voll == 1 && tries <= MAX_RAND_TRIES_PER_WORD); + if (voll == 0) { + for(int k = positionY, l = 0; k < positionY+leange; k++, l++) { //buchstaben holen und setzen + salad[k][positionX] = words[i][l]; + } + placedWordsCount++; + } else if (voll == 1) + printf("Das Wort '%s' konnte nicht plaziert werden", words[i]); + + } else if (vertikal_horizontal == 0) { + + tries = 0; + do { + voll = 0; + positionY = rand() % (searchFieldLen); + positionX = rand() % (searchFieldLen-leange); + for(int j = positionX; j < positionX+leange ; j++) { //überprüfung ob alle positionen 0 sind + if(salad[positionY][j] != '0') { + voll = 1; + } + } + tries++; + } while (voll == 1 && tries <= MAX_RAND_TRIES_PER_WORD); + if (voll == 0) { + for(int k = positionX, l = 0; k < positionX+leange; k++, l++) { //buchstaben holen und setzen + salad[positionY][k] = words[i][l]; + } + placedWordsCount++; + } else if (voll == 1) + printf("Das Wort '%s' konnte nicht plaziert werden", words[i]); + + } else + printf("Fehler bei Vertikal Horizontal Wert: %d", vertikal_horizontal); + } + + for(int i = 0; i < searchFieldLen; i++) { + for(int j = 0; j < searchFieldLen; j++) { + if(salad[i][j] == '0') { + salad[i][j] = buchstaben[rand() % anzahlBuchstaben]; + } + } + } + + return placedWordsCount; } // Prints the word salad to console 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]); + } + printf("\n"); + } } diff --git a/Start_Mac/game.o b/Start_Mac/game.o index 18d89e8..4bf5def 100644 Binary files a/Start_Mac/game.o and b/Start_Mac/game.o differ diff --git a/Start_Mac/input.c b/Start_Mac/input.c index 86fea6f..5d07104 100644 --- a/Start_Mac/input.c +++ b/Start_Mac/input.c @@ -11,7 +11,7 @@ int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) unsigned int count = 0; char line[MAX_LINE_LEN]; - char *teiler = " ,;"; + char *teiler = " ,;\n\t"; char *token; while(fgets(line, sizeof(line), file)){ @@ -31,6 +31,8 @@ int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) return count; } + //hier müsste man den token string in großbuchstaben formatieren + strncpy(words[count], token, MAX_WORD_LEN-1); words[count][MAX_WORD_LEN-1] = '\0'; diff --git a/Start_Mac/input.o b/Start_Mac/input.o index 678d432..616d98a 100644 Binary files a/Start_Mac/input.o and b/Start_Mac/input.o differ diff --git a/Start_Mac/main.c b/Start_Mac/main.c index ff73e74..4ff149a 100644 --- a/Start_Mac/main.c +++ b/Start_Mac/main.c @@ -28,7 +28,12 @@ int main(int argc, char *argv[]) { unsigned int placedWords = 0; char wordSalad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN]; // 2D array to store the word salad - + for(int i = 0; i < MAX_SEARCH_FIELD_LEN; i++) { + for(int j = 0; j < MAX_SEARCH_FIELD_LEN; j++) { + wordSalad[i][j] = '0'; + } + } + // Read words from file and store in 'words' array wordCount = readWords(file, words, MAX_NUMBER_OF_WORDS); fclose(file); diff --git a/Start_Mac/main.o b/Start_Mac/main.o index 8d2bd18..035cd2c 100644 Binary files a/Start_Mac/main.o and b/Start_Mac/main.o differ diff --git a/Start_Mac/wordsalad b/Start_Mac/wordsalad index f9a38c4..17ebaeb 100755 Binary files a/Start_Mac/wordsalad and b/Start_Mac/wordsalad differ