From 3d0b1d672906eadfac560a031238029a95946113 Mon Sep 17 00:00:00 2001 From: buhlhellerse98910 Date: Wed, 5 Nov 2025 20:30:54 +0100 Subject: [PATCH] game.c_Logik_Selina --- Start_Windows/game.c | 46 ++++++++++++++++++++++++ Start_Windows/input.c | 80 ++++++++++++++++++++++++++++++++++++++++- Start_Windows/input.o | Bin 0 -> 4873 bytes Start_Windows/main.c | 13 +++++-- Start_Windows/main.o | Bin 0 -> 4254 bytes Start_Windows/makefile | 1 + Start_Windows/test.c | 70 ++++++++++++++++++++++++++++++++++++ 7 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 Start_Windows/input.o create mode 100644 Start_Windows/main.o create mode 100644 Start_Windows/test.c diff --git a/Start_Windows/game.c b/Start_Windows/game.c index d8cc133..bf081e8 100644 --- a/Start_Windows/game.c +++ b/Start_Windows/game.c @@ -13,7 +13,53 @@ // 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) { + + // Wörter in salad einsortieren + // strtok durch words ersetzen, pro Zeile ein Wort + char * einzelwort = strtok(words, "\0"); + for (int i = 0; i < wordCount; i++){ + int einzelwort_laenge = strlen(einzelwort); + int richtung = rand()% 2; + // muss noch prüfen, ob in der Zeile schon was ist + // 1 ist horizontal, 0 ist vertikal + if (richtung == 1){ + for(int k = 0; k < einzelwort_laenge; k++){ + int zeile = rand()% MAX_SEARCH_FIELD_LEN; + int spalte = rand()% MAX_SEARCH_FIELD_LEN- einzelwort_laenge + 1; + salad[zeile][spalte + k] = einzelwort[k]; + } + } + else if (richtung == 0){ + for(int j = 0; j < einzelwort_laenge; j++){ + int zeile = rand()% MAX_SEARCH_FIELD_LEN - einzelwort_laenge + 1; + int spalte = rand()% MAX_SEARCH_FIELD_LEN; + salad[zeile + k][spalte] = einzelwort[k]; + } + } + strtok(NULL, "\0"); + } + + // zufällige Buchstaben erzeugen + srand(time(NULL)); + char alphabet [] = "abcdefghijklmnopqrstuvwxyz"; + int laenge = strlen(alphabet); + int zufallszahl = rand()% laenge; + char zufallsbuchstabe = alphabet[zufallszahl]; + + //prüfen, ob Wörter vorhanden sind mit isalpha + // -> erst wenn die ganze Länge des Wortes frei ist, array hinzufügen + // MAX Versuche das Wort zu platzieren == 10 -> hinzufügen + // isalpha == 0 -> kein Buchstabe + + for(int l = 0; l < MAX_SEARCH_FIELD_LEN; l++){ + for(int m = 0; m < MAX_SEARCH_FIELD_LEN; m++ ){ + if(isalpha(salad[l][m]) == 0 ) + salad[m][n] == zufallsbuchstabe; + } + } + + } // Prints the word salad to console diff --git a/Start_Windows/input.c b/Start_Windows/input.c index ed77805..6dbbd97 100644 --- a/Start_Windows/input.c +++ b/Start_Windows/input.c @@ -2,11 +2,89 @@ #include #include +#define MAX_NUMBER_OF_WORDS 100 +#define MAX_WORD_LEN 100 // TODO: // eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt. // Read words from file and store in 'words' array int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) { + char line [MAX_WORD_LEN]; + printf("H"); + + int j = 0; + int count = 0; + char single_word[MAX_WORD_LEN]; -} \ No newline at end of file + while(fgets(line, MAX_WORD_LEN, file) != NULL ){ + + printf("A"); + for(int i = 0; line[i] != '\0'; i++){ + printf("L"); + + + //prüft, ob das gesammelte Zeichen ein Zeichen ist, schiebt es dann Großgeschrieben in das Array word + if (isalpha(line[i]) != 0){ + single_word[j++] = toupper(line[i]); + } + // wenn das Wort fertig ist, dann wird dem Wort eine 0 angefügt um das Ende des Strings zu signalisieren, dann wird es in das Array words kopiert + else{ + single_word[j] = '\0'; + strncpy(words[count], single_word, MAX_WORD_LEN); + count++; + j = 0; + } + + } + + } + + + for(int n = 0; n < count ; n++) + { + printf("%s \n", words[n]); + printf("O"); + } + + return count; +} + +int main(){ + int wordCount = 0; + FILE *file = fopen("word.txt", "r"); + char words[MAX_NUMBER_OF_WORDS][MAX_WORD_LEN]; + wordCount = readWords(file, words, MAX_NUMBER_OF_WORDS); + fclose(file); + return wordCount; +} + +/* 1. Versuch + while(fgets(line, maxWordCount, file) != NULL ){ + + int i = 0; + int count = 0; + char line [MAX_WORD_LEN]; + + + while(line[i] != '\0' && line[i+1] != '\0'){ + + char single_word[MAX_WORD_LEN]; + + //prüft, ob das gesammelte Zeichen ein Zeichen ist, schiebt es dann Großgeschrieben in das Array word + if (isalpha(line[i]) != 0){ + single_word[i++] = toupper(line[i]); + + } + // wenn das Wort fertig ist, dann wird dem Wort eine 0 angefügt um das Ende des Strings zu signalisieren, dann wird es in das Array words kopiert + else{ + single_word[i++] = '\0'; + strncpy(single_word, words, i) + words[i][0] = '\0'; + } + i++; + + } + + */ + \ No newline at end of file diff --git a/Start_Windows/input.o b/Start_Windows/input.o new file mode 100644 index 0000000000000000000000000000000000000000..07b78cf7ba93f14e4e28c896c5635911cb80b534 GIT binary patch literal 4873 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 L+qyq)zrg+ns?V!5 literal 0 HcmV?d00001 diff --git a/Start_Windows/makefile b/Start_Windows/makefile index 72cccb7..c1a5b09 100644 --- a/Start_Windows/makefile +++ b/Start_Windows/makefile @@ -43,3 +43,4 @@ test: input.o game.o unit_tests.c # -------------------------- clean: del /f *.o *.exe + diff --git a/Start_Windows/test.c b/Start_Windows/test.c new file mode 100644 index 0000000..503f662 --- /dev/null +++ b/Start_Windows/test.c @@ -0,0 +1,70 @@ +#include "input.h" +#include +#include + + +// launch +#define MAX_NUMBER_OF_WORDS 100 + + + + + + + + + + + + +int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) +{ + char line [MAX_WORD_LEN]; + + int i = 0; + int j = 0; + int count = 0; + file = fopen("words.txt", "r"); + char single_word[MAX_WORD_LEN]; + + while(fgets(line, maxWordCount, file) != NULL ){ + + + while(line[i] != '\0' && line[i+1] != '\0'){ + + + + //prüft, ob das gesammelte Zeichen ein Zeichen ist, schiebt es dann Großgeschrieben in das Array word + if (isalpha(line[i]) != 0){ + single_word[j++] = toupper(line[i]); + + } + // wenn das Wort fertig ist, dann wird dem Wort eine 0 angefügt um das Ende des Strings zu signalisieren, dann wird es in das Array words kopiert + else{ + single_word[j++] = '\0'; + strncpy(words[count], single_word, i); + i = 0; + count++; + int j = 0; + } + i++; + + } + } + + + for(int n = 0; n < count ; n++) + { + printf("%s \n", words[n]); + } + +} + +int main() +{ + char words[MAX_NUMBER_OF_WORDS][MAX_WORD_LEN]; + FILE*file; + unsigned int wordCount = 0; + wordCount = readWords(file, words, MAX_NUMBER_OF_WORDS); + +} \ No newline at end of file