diff --git a/Start_Windows/game.c b/Start_Windows/game.c index d8cc133..ef5f27a 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 @@ -13,11 +14,111 @@ // 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)); + int placedWords = 0; + // Array mit . füllen + for (int r = 0; r < searchFieldLen; r++){ + for(int s = 0; s < searchFieldLen; s++){ + salad[r][s] = '.'; + } + } + + // -> erst wenn die ganze Länge des Wortes frei ist, array hinzufügen + // MAX Versuche das Wort zu platzieren == 10 + + + // Wörter in salad einsortieren + for (int num_words = 0; num_words < wordCount; num_words++){ + + int laenge = strlen(words[num_words]); + + // muss noch prüfen, ob in der Zeile schon was ist + // 1 ist horizontal, 0 ist vertikal + // isalpha == 0 -> kein Buchstabe + + for(int versuch = 0; versuch < MAX_RAND_TRIES_PER_WORD; versuch++){ + int richtung = rand()% 2; + int belegt = 0; + + // horizontale Eingabe + if (richtung == 1){ + int zeile = rand()% searchFieldLen; + int spalte = rand()% (searchFieldLen- laenge +1); + + //prüft, ob die herausgesuchte Zeile noch frei ist + // belegt == 1 -> Zeile nicht frei + for (int o = spalte; o < spalte + laenge; o++){ + if(salad[zeile][o] != '.'){ + belegt = 1; + break; + } + } + // setzt in das Array ein, wenn frei oder erhöht die Versuchsanzahl + if (belegt == 0){ + for(int k = 0; k < laenge; k++){ + salad[zeile][spalte + k] = words[num_words][k]; + + } + placedWords++; + break; + } + } + // vertikale Eingabe + else if (richtung == 0){ + + int zeile = rand()% (searchFieldLen - laenge +1); + int spalte = rand()% searchFieldLen; + + //prüft, ob die herausgesuchte Zeile noch frei ist + for (int n = zeile; n < zeile + laenge; n++){ + if(salad[n][spalte] != '.'){ + belegt = 1; + break; + } + } + // setzt in das Array ein, wenn frei oder erhöht die Versuchsanzahl + if (belegt == 0){ + for(int j = 0; j < laenge; j++){ + salad[zeile + j][spalte] = words[num_words][j]; + + } + placedWords++; + break; + } + } + else{ + break; + } + } + + } + + // fügt zufällige Buchstaben ein + for(int l = 0; l < searchFieldLen; l++){ + for(int m = 0; m < searchFieldLen; m++ ){ + if(isalpha(salad[l][m]) == 0 ){ + // zufällige Buchstaben erzeugen + char alphabet [] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + int laenge = strlen(alphabet); + int zufallszahl = rand()% laenge; + char zufallsbuchstabe = alphabet[zufallszahl]; + // zufällige Buchstaben einfügen + salad[l][m] = zufallsbuchstabe; + } + } + } + + return placedWords; } // Prints the word salad to console void showWordSalad(const char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen) { - -} + for(int p = 0; p < searchFieldLen; p++){ + for(int q = 0; q < searchFieldLen; q++){ + printf("%c", salad[p][q]); + } + printf("\n"); + } +} \ No newline at end of file diff --git a/Start_Windows/game.o b/Start_Windows/game.o new file mode 100644 index 0000000..1db69c1 Binary files /dev/null and b/Start_Windows/game.o differ diff --git a/Start_Windows/input.o b/Start_Windows/input.o new file mode 100644 index 0000000..53c7a70 Binary files /dev/null and b/Start_Windows/input.o differ diff --git a/Start_Windows/makefile b/Start_Windows/makefile index 32ac0da..1a8600b 100644 --- a/Start_Windows/makefile +++ b/Start_Windows/makefile @@ -46,5 +46,4 @@ clean: #hier eigene wordsalad kopieren, library rauslassen wordsalad_myversion: main.o input.o game.o graphicalGame.o - $(CC) $(CFLAGS) -o wordsalad main.o input.o game.o graphicalGame.o $(BINARIES)/libraylib.a $(LDFLAGS) - + $(CC) $(CFLAGS) -o wordsalad main.o input.o game.o graphicalGame.o $(BINARIES)/libraylib.a $(LDFLAGS) \ No newline at end of file diff --git a/Start_Windows/runTests2.exe b/Start_Windows/runTests2.exe new file mode 100644 index 0000000..79c772e Binary files /dev/null and b/Start_Windows/runTests2.exe differ