#include "game.h" #include #include #include #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 //TODO: Spiellogik implementieren: /* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren * 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) { //prüfen, ob Wörter vorhanden sind mit isalpha // -> erst wenn die ganze Länge des Wortes frei ist, array hinzufügen // MAX Versuche das Wort zu platzieren == 10 // isalpha == 0 -> kein Buchstabe // Wörter in salad einsortieren for (int i = 0; i < wordCount; i++){ char einzelwort[] = words[i] int einzelwort_laenge = strlen(einzelwort); // muss noch prüfen, ob in der Zeile schon was ist // 1 ist horizontal, 0 ist vertikal // frei == 1 -> Zeile nicht frei for(int versuch = 0; versuch < MAX_RAND_TRIES_PER_WORD; versuch++ ){ int richtung = rand()% 2; int frei = 0; // horizontale Eingabe if (richtung == 1){ int zeile = rand()% MAX_SEARCH_FIELD_LEN; int spalte = rand()% MAX_SEARCH_FIELD_LEN- einzelwort_laenge + 1; //prüft, ob die herausgesuchte Zeile noch frei ist for (int o = spalte; o < spalte + einzelwort_laenge; o++){ if(isalpha(salad[zeile][o]) == 0){ frei = 1; break; } } // setzt in das Array ein, wenn frei oder erhöht die Versuchsanzahl if (frei = 0){ for(int k = 0; k < einzelwort_laenge; k++){ salad[zeile][spalte + k] = einzelwort[k]; versuch = MAX_RAND_TRIES_PER_WORD; } } } // vertikale Eingabe else if (richtung == 0){ int zeile = rand()% MAX_SEARCH_FIELD_LEN - einzelwort_laenge + 1; int spalte = rand()% MAX_SEARCH_FIELD_LEN; //prüft, ob die herausgesuchte Zeile noch frei ist for (int n = zeile; n < zeile + einzelwort_laenge; n++){ if(isalpha(salad[n][spalte]) == 0){ frei = 1; break; } } // setzt in das Array ein, wenn frei oder erhöht die Versuchsanzahl if (frei = 0){ for(int j = 0; j < einzelwort_laenge; j++){ salad[zeile + j][spalte] = einzelwort[j]; versuch = MAX_RAND_TRIES_PER_WORD; } } } // gibt über searchFieldLen zurück, dass ein Wort nicht einsortiert wurde if(versuch = MAX_RAND_TRIES_PER_WORD-1){ searchFieldLen = 1; } } } // fügt zufällige Buchstaben ein for(int l = 0; l < MAX_SEARCH_FIELD_LEN; l++){ for(int m = 0; m < MAX_SEARCH_FIELD_LEN; m++ ){ if(isalpha(salad[l][m]) == 0 ){ // zufällige Buchstaben erzeugen srand(time(NULL)); char alphabet [] = "abcdefghijklmnopqrstuvwxyz"; int laenge = strlen(alphabet); int zufallszahl = rand()% laenge; char zufallsbuchstabe = alphabet[zufallszahl]; // zufällige Buchstaben einfügen salad[m][n] == zufallsbuchstabe; } } } return searchFieldLen } // 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 < MAX_SEARCH_FIELD_LEN; p++){ for(int q = 0; q < MAX_SEARCH_FIELD_LEN; q++){ printf("%s", salad[p][q]); } } }