Platzieren der zu suchenden Wörter in game.c
This commit is contained in:
1 parent
0bd55e367a
commit
40a1743c0b
1 file changed
+68
@@ -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)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user