prototype game not finished
This commit is contained in:
1 parent
8097b5ae51
commit
88b0b8f3fb
1 file changed
+62
-1
+62
-1
@@ -6,12 +6,73 @@
|
|||||||
#define MAX_RAND_TRIES_PER_WORD 10
|
#define MAX_RAND_TRIES_PER_WORD 10
|
||||||
#define EMPTY_CHAR 0
|
#define EMPTY_CHAR 0
|
||||||
|
|
||||||
//TODO: Spiellogik implementieren:
|
// TODO: Spiellogik implementieren:
|
||||||
/* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren
|
/* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren
|
||||||
* restliche Felder mit zufälligen Buchstaben füllen */
|
* restliche Felder mit zufälligen Buchstaben füllen */
|
||||||
|
|
||||||
|
int tryPlaceVertical(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char word[], unsigned int x, unsigned int y);
|
||||||
|
int tryPlaceHorizontal(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char word[], unsigned int x, unsigned int y);
|
||||||
|
|
||||||
// Creates the word salad by placing words randomly and filling empty spaces
|
// 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)
|
int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char words[][MAX_WORD_LEN], unsigned int wordCount)
|
||||||
{
|
{
|
||||||
|
// place words randomly
|
||||||
|
int placedWords = 0;
|
||||||
|
srand((unsigned int)time(NULL));
|
||||||
|
for (int word = 0; word < wordCount; word++)
|
||||||
|
{
|
||||||
|
// (re-)try randomly
|
||||||
|
int retries = searchFieldLen * 2;
|
||||||
|
int placed = 0;
|
||||||
|
|
||||||
|
// int vertical = rand() / (RAND_MAX / 2);
|
||||||
|
int vertical = 1;
|
||||||
|
while (!placed && retries > 0)
|
||||||
|
{
|
||||||
|
int x = rand() / (RAND_MAX / (!vertical ? searchFieldLen - 1 - strlen(words[word]) : searchFieldLen));
|
||||||
|
int y = rand() / (RAND_MAX / (vertical ? searchFieldLen - 1 - strlen(words[word]) : searchFieldLen));
|
||||||
|
printf("Placed %s at %d,%d\n", words[word], x, y);
|
||||||
|
placed = tryPlaceVertical(salad, searchFieldLen, words[word], x, y);
|
||||||
|
|
||||||
|
if (placed) printf("Placed %s at %d,%d!\n", words[word], x, y);
|
||||||
|
|
||||||
|
if (--retries < 1)
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!placed)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
placedWords++;
|
||||||
|
// printf("Placed!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// fill empty spaces
|
||||||
|
|
||||||
|
return placedWords;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tryPlaceVertical(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char word[], unsigned int x, unsigned int y)
|
||||||
|
{
|
||||||
|
// search fields for letters
|
||||||
|
int wordLen = strlen(word);
|
||||||
|
|
||||||
|
for (int testY = y; testY < (y + wordLen); testY++)
|
||||||
|
{
|
||||||
|
if (salad[testY][x] != '\0')
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if ok then put my word in
|
||||||
|
for (int placeChar = 0; placeChar < wordLen; placeChar++)
|
||||||
|
{
|
||||||
|
salad[placeChar + y][x] = word[placeChar];
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tryPlaceHorizontal(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char word[], unsigned int x, unsigned int y)
|
||||||
|
{
|
||||||
|
// TODO;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user