diff --git a/Start_Linux/game.c b/Start_Linux/game.c index a71fcca..11034ad 100644 --- a/Start_Linux/game.c +++ b/Start_Linux/game.c @@ -6,81 +6,101 @@ #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 -//TODO: Spiellogik implementieren: +// TODO: Spiellogik implementieren: /* * 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 */ // 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, char words[][MAX_WORD_LEN], unsigned int wordCount) { - int row, col, placedWords=0; + int row, col, placedWords = 0; - //Gesamtes Feld auf 0 setzen - for (row=0; row < searchFieldLen; row++) { - for (col=0; col < searchFieldLen; col++) { - salad [row][col] = EMPTY_CHAR; + // Gesamtes Feld auf 0 setzen + for (row = 0; row < searchFieldLen; row++) + { + for (col = 0; col < searchFieldLen; col++) + { + salad[row][col] = EMPTY_CHAR; } } - - //Wortlänge wird für jedes Wort erfasst - for (int w=0; w< wordCount; w++) { + + // Wortlänge wird für jedes Wort erfasst + for (int w = 0; w < wordCount; w++) + { const char *word = words[w]; - int wordLen = strlen(word); - if (wordLen == 0 || wordLen > searchFieldLen) { + int wordLen = strlen(word); + if (wordLen == 0 || wordLen > searchFieldLen) + { continue; } int placed = 0; - - for (int tries = 0; tries < MAX_RAND_TRIES_PER_WORD && !placed; tries++) { + + for (int tries = 0; tries < MAX_RAND_TRIES_PER_WORD && !placed; tries++) + { int dir = (rand() % 2); // 0 oder 1 zur Festlegung von vertikal oder horizontal row = 0; col = 0; - if (dir == 0) { //horizontal //Startpunkt so festlegen, dass Wort nicht aus Feld raus ragt - row = rand () % searchFieldLen; - col = rand () % (searchFieldLen - wordLen + 1); - } else { //vertikal - row = rand () % (searchFieldLen - wordLen + 1); - col = rand () % searchFieldLen; + if (dir == 0) + { // horizontal //Startpunkt so festlegen, dass Wort nicht aus Feld raus ragt + row = rand() % searchFieldLen; + col = rand() % (searchFieldLen - wordLen + 1); + } + else + { // vertikal + row = rand() % (searchFieldLen - wordLen + 1); + col = rand() % searchFieldLen; } int placeable = 1; - for (int i = 0; i < wordLen; i++) { //Felder ab Startpunkt werden durchgegangen und gecheckt, ob Felder auf Null sind: - // JA =>Wort wird im nächsten Schritt platziert, NEIN => Abbruch, Neuer Startpunkt wird festgelegt - if ((dir == 0 && salad[row][col + i] != EMPTY_CHAR) || (dir == 1 && salad[row + i][col] != EMPTY_CHAR)) { + for (int i = 0; i < wordLen; i++) + { // Felder ab Startpunkt werden durchgegangen und gecheckt, ob Felder auf Null sind: + // JA =>Wort wird im nächsten Schritt platziert, NEIN => Abbruch, Neuer Startpunkt wird festgelegt + if ((dir == 0 && salad[row][col + i] != EMPTY_CHAR) || (dir == 1 && salad[row + i][col] != EMPTY_CHAR)) + { placeable = 0; break; - } - + } } - if (placeable) { //wenn es keine Überschneidungen gibt, wird Wort platziert - for (int i=0; i 0) { startGame(wordSalad, SALAD_SIZE, words, wordCount, 800); } + else + { + fprintf(stderr, "no word could be placed"); + exitCode = EXIT_FAILURE; + } } else { diff --git a/Start_Windows/game.c b/Start_Windows/game.c index a71fcca..11034ad 100644 --- a/Start_Windows/game.c +++ b/Start_Windows/game.c @@ -6,81 +6,101 @@ #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 -//TODO: Spiellogik implementieren: +// TODO: Spiellogik implementieren: /* * 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 */ // 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, char words[][MAX_WORD_LEN], unsigned int wordCount) { - int row, col, placedWords=0; + int row, col, placedWords = 0; - //Gesamtes Feld auf 0 setzen - for (row=0; row < searchFieldLen; row++) { - for (col=0; col < searchFieldLen; col++) { - salad [row][col] = EMPTY_CHAR; + // Gesamtes Feld auf 0 setzen + for (row = 0; row < searchFieldLen; row++) + { + for (col = 0; col < searchFieldLen; col++) + { + salad[row][col] = EMPTY_CHAR; } } - - //Wortlänge wird für jedes Wort erfasst - for (int w=0; w< wordCount; w++) { + + // Wortlänge wird für jedes Wort erfasst + for (int w = 0; w < wordCount; w++) + { const char *word = words[w]; - int wordLen = strlen(word); - if (wordLen == 0 || wordLen > searchFieldLen) { + int wordLen = strlen(word); + if (wordLen == 0 || wordLen > searchFieldLen) + { continue; } int placed = 0; - - for (int tries = 0; tries < MAX_RAND_TRIES_PER_WORD && !placed; tries++) { + + for (int tries = 0; tries < MAX_RAND_TRIES_PER_WORD && !placed; tries++) + { int dir = (rand() % 2); // 0 oder 1 zur Festlegung von vertikal oder horizontal row = 0; col = 0; - if (dir == 0) { //horizontal //Startpunkt so festlegen, dass Wort nicht aus Feld raus ragt - row = rand () % searchFieldLen; - col = rand () % (searchFieldLen - wordLen + 1); - } else { //vertikal - row = rand () % (searchFieldLen - wordLen + 1); - col = rand () % searchFieldLen; + if (dir == 0) + { // horizontal //Startpunkt so festlegen, dass Wort nicht aus Feld raus ragt + row = rand() % searchFieldLen; + col = rand() % (searchFieldLen - wordLen + 1); + } + else + { // vertikal + row = rand() % (searchFieldLen - wordLen + 1); + col = rand() % searchFieldLen; } int placeable = 1; - for (int i = 0; i < wordLen; i++) { //Felder ab Startpunkt werden durchgegangen und gecheckt, ob Felder auf Null sind: - // JA =>Wort wird im nächsten Schritt platziert, NEIN => Abbruch, Neuer Startpunkt wird festgelegt - if ((dir == 0 && salad[row][col + i] != EMPTY_CHAR) || (dir == 1 && salad[row + i][col] != EMPTY_CHAR)) { + for (int i = 0; i < wordLen; i++) + { // Felder ab Startpunkt werden durchgegangen und gecheckt, ob Felder auf Null sind: + // JA =>Wort wird im nächsten Schritt platziert, NEIN => Abbruch, Neuer Startpunkt wird festgelegt + if ((dir == 0 && salad[row][col + i] != EMPTY_CHAR) || (dir == 1 && salad[row + i][col] != EMPTY_CHAR)) + { placeable = 0; break; - } - + } } - if (placeable) { //wenn es keine Überschneidungen gibt, wird Wort platziert - for (int i=0; i 0) { startGame(wordSalad, SALAD_SIZE, words, wordCount, 800); } + else + { + fprintf(stderr, "no word could be placed"); + exitCode = EXIT_FAILURE; + } } else {