#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 */ 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 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; }