From a75c51c13a8e0d9a59a8de309e2ad0979f3612d5 Mon Sep 17 00:00:00 2001 From: Tubui <21020129@vnu.edu.vn> Date: Sat, 25 Oct 2025 16:28:05 +0200 Subject: [PATCH] All tests passed --- game.c | 177 ++++++++++++++++++++++++++++----------------------- game.o | Bin 6553 -> 7077 bytes input.c | 54 +++++++++------- input.o | Bin 4067 -> 4695 bytes runTests.exe | Bin 173892 -> 175267 bytes 5 files changed, 127 insertions(+), 104 deletions(-) diff --git a/game.c b/game.c index 22d9bd5..72f0945 100644 --- a/game.c +++ b/game.c @@ -2,6 +2,7 @@ #include #include #include +#include #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 @@ -22,108 +23,124 @@ // } -// Funktion, die einen zufälligen Großbuchstaben generiert +// Funktion, die einen zufälligen Großbuchstaben (A–Z) erzeugt char randomLetter() { - return 'A' + rand() % 26; + return 'A' + rand() % 26; } -// Hauptfunktion: Erstellt das Wortsalat-Spiel +// Erstellt das Wortsalat-Spielfeld und platziert die Wörter zufällig int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char words[][MAX_WORD_LEN], unsigned int wordCount) { - // 1. Leeres Spielfeld initialisieren - for (unsigned int i = 0; i < searchFieldLen; i++) - { - for (unsigned int j = 0; j < searchFieldLen; j++) - { - salad[i][j] = EMPTY_CHAR; - } - } + // 1. Spielfeld mit leeren Zeichen initialisieren + for (unsigned int i = 0; i < searchFieldLen; i++) + { + for (unsigned int j = 0; j < searchFieldLen; j++) + { + salad[i][j] = EMPTY_CHAR; + } + } - srand((unsigned int)time(NULL)); + srand((unsigned int)time(NULL)); + int placedWords = 0; - // 2. Jedes Wort zufällig im Spielfeld platzieren - for (unsigned int w = 0; w < wordCount; w++) - { - const char *word = words[w]; - size_t len = strlen(word); - if (len > searchFieldLen) - continue; // Überspringen, falls das Wort zu lang ist + // 2. Jedes Wort zufällig auf dem Spielfeld platzieren + for (unsigned int w = 0; w < wordCount; w++) + { + char word[MAX_WORD_LEN]; + strncpy(word, words[w], MAX_WORD_LEN); + word[MAX_WORD_LEN - 1] = '\0'; - int placed = 0; - for (int attempt = 0; attempt < MAX_RAND_TRIES_PER_WORD && !placed; attempt++) - { - int dir = rand() % 2; // 0 = horizontal, 1 = vertikal - int row = rand() % searchFieldLen; - int col = rand() % searchFieldLen; + // Alle Buchstaben des Wortes in Großbuchstaben umwandeln + for (size_t k = 0; k < strlen(word); k++) + { + word[k] = (char)toupper((unsigned char)word[k]); + } - // Prüfen, ob das Wort an die Position passt - if (dir == 0 && col + len <= searchFieldLen) - { - // Prüfen, ob keine Überschneidungen mit anderen Buchstaben auftreten - int ok = 1; - for (size_t i = 0; i < len; i++) + size_t len = strlen(word); + if (len > searchFieldLen) + continue; // Wort ist zu lang → überspringen + + int placed = 0; + for (int attempt = 0; attempt < MAX_RAND_TRIES_PER_WORD && !placed; attempt++) + { + int dir = rand() % 2; // 0 = horizontal, 1 = vertikal + int row = rand() % searchFieldLen; + int col = rand() % searchFieldLen; + + if (dir == 0 && col + len <= searchFieldLen) { - if (salad[row][col + i] != EMPTY_CHAR && salad[row][col + i] != word[i]) - { - ok = 0; - break; - } + int ok = 1; + // Prüfen, ob der Platz frei ist oder die Buchstaben passen + for (size_t i = 0; i < len; i++) + { + if (salad[row][col + i] != EMPTY_CHAR && salad[row][col + i] != word[i]) + { + ok = 0; + break; + } + } + if (ok) + { + // Wort horizontal einfügen + for (size_t i = 0; i < len; i++) + salad[row][col + i] = word[i]; + placed = 1; + } } - if (ok) + else if (dir == 1 && row + len <= searchFieldLen) { - for (size_t i = 0; i < len; i++) - salad[row][col + i] = word[i]; - placed = 1; + int ok = 1; + // Prüfen, ob der Platz frei ist oder die Buchstaben passen + for (size_t i = 0; i < len; i++) + { + if (salad[row + i][col] != EMPTY_CHAR && salad[row + i][col] != word[i]) + { + ok = 0; + break; + } + } + if (ok) + { + // Wort vertikal einfügen + for (size_t i = 0; i < len; i++) + salad[row + i][col] = word[i]; + placed = 1; + } } - } - else if (dir == 1 && row + len <= searchFieldLen) - { - int ok = 1; - for (size_t i = 0; i < len; i++) - { - if (salad[row + i][col] != EMPTY_CHAR && salad[row + i][col] != word[i]) - { - ok = 0; - break; - } - } - if (ok) - { - for (size_t i = 0; i < len; i++) - salad[row + i][col] = word[i]; - placed = 1; - } - } - } - } + } - // 3. Leere Felder mit zufälligen Buchstaben füllen - for (unsigned int i = 0; i < searchFieldLen; i++) - { - for (unsigned int j = 0; j < searchFieldLen; j++) - { - if (salad[i][j] == EMPTY_CHAR) - salad[i][j] = randomLetter(); - } - } + if (placed) + placedWords++; // Anzahl der erfolgreich platzierten Wörter erhöhen + } - return 0; // 0 = erfolgreich + // 3. Alle leeren Felder mit zufälligen Buchstaben füllen + for (unsigned int i = 0; i < searchFieldLen; i++) + { + for (unsigned int j = 0; j < searchFieldLen; j++) + { + if (salad[i][j] == EMPTY_CHAR) + salad[i][j] = randomLetter(); + } + } + + // Rückgabewert: Anzahl der platzierten Wörter + return placedWords; } -// Funktion zur Anzeige des Spielfelds in der Konsole +// Gibt das Spielfeld in der Konsole aus void showWordSalad(const char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen) { - for (unsigned int i = 0; i < searchFieldLen; i++) - { - for (unsigned int j = 0; j < searchFieldLen; j++) - { - printf("%c ", salad[i][j]); - } - printf("\n"); - } + for (unsigned int i = 0; i < searchFieldLen; i++) + { + for (unsigned int j = 0; j < searchFieldLen; j++) + { + printf("%c ", salad[i][j]); + } + printf("\n"); + } } \ No newline at end of file diff --git a/game.o b/game.o index ed7575a96ec9a1a2f5715fd004aed42adebb24cd..3a8608ffcec14ad0f5e8bc9884e8c0ec139a4254 100644 GIT binary patch literal 7077 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 start && isspace((unsigned char)*end)) + // Zerlegt die Zeile in Wörter mit den Trennzeichen: Leerzeichen, Komma, Semikolon + char *token = strtok(buffer, " ,;"); + while (token != NULL && count < maxWordCount) { - *end = '\0'; - end--; + // Leerzeichen am Anfang und Ende entfernen + while (isspace((unsigned char)*token)) + token++; + char *end = token + strlen(token) - 1; + while (end > token && isspace((unsigned char)*end)) + { + *end = '\0'; + end--; + } + + // In Großbuchstaben umwandeln + for (unsigned int i = 0; i < strlen(token); i++) + { + token[i] = (char)toupper((unsigned char)token[i]); + } + + // In das Array 'words' kopieren + strncpy(words[count], token, MAX_WORD_LEN - 1); + words[count][MAX_WORD_LEN - 1] = '\0'; + + count++; + token = strtok(NULL, " ,;"); } - - // Sichere Kopie in das Array 'words' - strncpy(words[count], start, MAX_WORD_LEN - 1); - words[count][MAX_WORD_LEN - 1] = '\0'; // Nullterminierung sicherstellen - - count++; } return count; diff --git a/input.o b/input.o index 34d50193d4ecb6697af42b8ac8b377e7e50e02be..a6f83a7a2c246c8cf8c78f4f6feaba6217e6a4f3 100644 GIT binary patch delta 2276 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 diff --git a/runTests.exe b/runTests.exe index 8a4a3b03ca6f996d7597d79643124f0b19dfc39b..938ebcb934398c50432208a8edc500cd28d5e803 100644 GIT binary patch delta 31911 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 F{{VSbF7^Nb delta 30869 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