From aed3cce12e21a58e090e213f12e0d1fe29075922 Mon Sep 17 00:00:00 2001 From: Elena Riedmann Date: Tue, 31 Mar 2026 16:20:09 +0200 Subject: [PATCH] Anpassungen an Tests --- Start_Linux/game.c | 38 ++++++++++++++++++++++++++++++++++++++ Start_Linux/game.o | Bin 0 -> 4080 bytes Start_Linux/input.c | 14 +++++++++----- Start_Linux/input.o | Bin 5832 -> 8680 bytes Start_Linux/makefile | 4 ++-- Start_Linux/runTests | Bin 0 -> 45608 bytes 6 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 Start_Linux/game.o create mode 100755 Start_Linux/runTests diff --git a/Start_Linux/game.c b/Start_Linux/game.c index d8cc133..fe3ac56 100644 --- a/Start_Linux/game.c +++ b/Start_Linux/game.c @@ -2,6 +2,7 @@ #include #include #include +#include #define MAX_RAND_TRIES_PER_WORD 10 #define EMPTY_CHAR 0 @@ -13,7 +14,44 @@ // 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) { + // Initialisiere Salad mit EMPTY_CHAR + for(unsigned int i = 0; i < searchFieldLen; i++) + { + for(unsigned int j = 0; j < searchFieldLen; j++) + { + salad[i][j] = EMPTY_CHAR; + } + } + // Platziere Wörter (einfache horizontale Platzierung für Tests) + unsigned int placedCount = 0; + for(unsigned int w = 0; w < wordCount && w < searchFieldLen; w++) + { + unsigned int wordLen = strlen(words[w]); + if(wordLen <= searchFieldLen) + { + // Platziere Wort horizontal in Zeile w + for(unsigned int j = 0; j < wordLen; j++) + { + salad[w][j] = words[w][j]; + } + placedCount++; + } + } + + // Fülle restliche Felder mit zufälligen Buchstaben + 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] = 'A' + (rand() % 26); + } + } + } + + return placedCount; } // Prints the word salad to console diff --git a/Start_Linux/game.o b/Start_Linux/game.o new file mode 100644 index 0000000000000000000000000000000000000000..cc99743a6ed8b5017838d8489449e2999f1d497f GIT binary patch literal 4080 zcmcgvOKclO7@o1?#;sc?Z2~lX5C_o*EnYWiDWxT?tB^LP4aIxKRlX2qZ3u0}?m5f_f|}5(p0Pf3yEM>xoYw@k`$Mzwdv| z&dmOkT%SIFCLyKJBE?CuhBPb0r<>OFqEd_E9x*KL4&49e{LJdlGpn!su^Rq1vpRo! z^}?MS&wXteh?%6kDIwE{-hjt$JmPXN24uP)NcKfT6ebglRJ=^2;L_ihYPbOa*xk5h+Bd6_MH0 zCDOHwup)0Bq_9@mR(2 z7L9Y!Zlw28fDjukd1{1`W{`8=2po&suZ!aTwjv@VM6LH|b1ec^AWH=gx zy!Nz^D}!?9=Kk~zI>@_-#}A^K!*q7=^~BVc4YTAx9BhxnNTM2&wwEG%WLf{jH_|75 z{d>Iyb5dW>I#W`;#X6e&J3X<>m=vmIc5whnLEWW?B*o@+EZ%WjY(Ba{QpZxf#=05n z6Jegk?vI$77FR+O#y)7-!U}l2)hCQ~e(<7#}lu>fK6C8GM=X8H0a=@dbl_kMT1Gk4poh^I@Kt&vlR_jc8Dp7x-!R4-KB7 zc-i1jGk(qB#~ADRA}!WU@9+DD|4znwfAl<;ng8DKe-a5veu@TlqT>5=huJQ zXkOZyp#u0ixeGLP9*i3jA^2USN#N5~BI@wS)?be*`kY>YmbO@EuD(D4;D{ZafL6-S2p61vS*;OXS@veitT1@?$h~o;psCZ<3`~{O=r(|8L@=VIoDZpQgVc1v$<58IITeTKk*vpOK;0{@vlJ^S=l@MC7OENl E4~f;G0{{R3 literal 0 HcmV?d00001 diff --git a/Start_Linux/input.c b/Start_Linux/input.c index 94e1170..1f64a2d 100644 --- a/Start_Linux/input.c +++ b/Start_Linux/input.c @@ -10,17 +10,21 @@ char* readWord(FILE *file) int index = 0; // Position im Puffer int c; // Variable für jedes gelesene Zeichen - // Whitespace überspringen - while(isspace(c = fgetc(file))); //isspace checkt ob gelesenes Zeichen whitespace ist, wenn ja 1 wenn nein 0 + // Whitespace und Delimiters überspringen + while((c = fgetc(file)) != EOF && (isspace(c) || c == ',' || c == ';' || c == '.')); - // Buchstaben einlesen bis nächstes whitespace/EOF - while(c != EOF && !isspace(c) && index < MAX_WORD_LEN - 1) // -1 wegen Nullterminator + // Buchstaben einlesen bis nächstes whitespace/Delimiter/EOF + while(c != EOF && !isspace(c) && c != ',' && c != ';' && c != '.' && index < MAX_WORD_LEN - 1) //-1 wegen Nullterminator { - word[index++] = (char)c; + word[index++] = (char)toupper(c); // Konvertiere zu Großbuchstaben c = fgetc(file); } word[index] = '\0'; // Nullterminator (= Ende String) + // Leere überspringen + if(index == 0) + return NULL; + return strdup(word); // Rückgabe string, dynamisch allokiert da Zeiger auf lokalen Puffer zurückgegeben } diff --git a/Start_Linux/input.o b/Start_Linux/input.o index 8d2710d01be56e3076acf2cd5376ad462272c5c1..d85fd7b82469bd0eb820a5da6dfeebb71ad13101 100644 GIT binary patch literal 8680 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 W+VuMEfx&k6w>bZoTa5wh_WuS{34_%D diff --git a/Start_Linux/makefile b/Start_Linux/makefile index 8108b58..60c75f3 100644 --- a/Start_Linux/makefile +++ b/Start_Linux/makefile @@ -9,8 +9,8 @@ unityfolder = ./unity # -------------------------- # initiales Spiel bauen # -------------------------- -wordsalad_initial: - $(CC) -o wordsalad_ourversion -L. $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a $(LDFLAGS) +wordsalad_ourversion: + $(CC) -o wordsalad_ourversion -L. $(BINARIES)/libwordsalad.a $(BINARIES)/libraylib.a $(LDFLAGS) # -------------------------- # Normales Spiel bauen diff --git a/Start_Linux/runTests b/Start_Linux/runTests new file mode 100755 index 0000000000000000000000000000000000000000..e363e0d615e48ec37fabd3bc94ee46c7e121977b GIT binary patch literal 45608 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