From 40a1743c0b1667fb2fbf30f85083190bcb287e35 Mon Sep 17 00:00:00 2001 From: timoh Date: Mon, 26 Oct 2026 08:45:19 +0100 Subject: [PATCH] =?UTF-8?q?Platzieren=20der=20zu=20suchenden=20W=C3=B6rter?= =?UTF-8?q?=20in=20game.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Startcode/game.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/Startcode/game.c b/Startcode/game.c index 803301f..fe1cd7e 100644 --- a/Startcode/game.c +++ b/Startcode/game.c @@ -10,6 +10,74 @@ /* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren * restliche Felder mit zufälligen Buchstaben füllen */ + +//Erstellt den Wortsalat +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 anzahlPlatziert = 0; + + //1. Feld leeren + for (unsigned int zeile = 0; zeile < searchFieldLen; zeile++) + for (unsigned int spalte = 0; spalte < searchFieldLen; spalte++) + salad[zeile][spalte] = EMPTY_CHAR; + + //2. Wörter platzieren + for (unsigned int w = 0; w < wordCount; w++) + { + unsigned int laenge = strlen(words[w]); + if (laenge > searchFieldLen) + continue; //Wort zu lang + + for (int versuch = 0; versuch < MAX_RAND_TRIES_PER_WORD; versuch++) + { + int waagrecht = rand() % 2; //1 = horizontal, 0 = vertikal + unsigned int zeile, spalte; + + if (waagrecht) + { + zeile = rand() % searchFieldLen; + spalte = rand() % (searchFieldLen - laenge + 1); + } + else if (!waagrecht) + { + zeile = rand() % (searchFieldLen - laenge + 1); + spalte = rand() % searchFieldLen; + } + + //Prüfen, ob Platz frei ist + int passt = 1; + for (unsigned int i = 0; i < laenge; i++) + { + char feld = waagrecht ? salad[zeile][spalte + i] : salad[zeile + i][spalte]; + if (feld != EMPTY_CHAR && feld != words[w][i]) + passt = 0; + } + + //Wort eintragen + if (passt) + { + for (unsigned int i = 0; i < laenge; i++) + { + if (waagrecht) + salad[zeile][spalte + i] = words[w][i]; + else + salad[zeile + i][spalte] = words[w][i]; + } + anzahlPlatziert++; + break; + } + } + } + + //3. Leere Felder mit Zufallsbuchstaben füllen + for (unsigned int zeile = 0; zeile < searchFieldLen; zeile++) + for (unsigned int spalte = 0; spalte < searchFieldLen; spalte++) + if (salad[zeile][spalte] == EMPTY_CHAR) + salad[zeile][spalte] = 'A' + rand() % 26; + + return anzahlPlatziert; +} + // 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) {