From af1338f2ba0b70f43b5fc8f4cadb5a6e120c68e2 Mon Sep 17 00:00:00 2001 From: Bannach Date: Tue, 28 Oct 2025 18:26:33 +0100 Subject: [PATCH] Zwischenstand game.c --- Start_Windows/game.c | 95 +++++++++++++++++++++++++++++++++++++ Start_Windows/game.o | Bin 2868 -> 3088 bytes Start_Windows/input.c | 2 +- Start_Windows/input.o | Bin 3681 -> 3681 bytes Start_Windows/runTests.exe | Bin 88740 -> 89252 bytes 5 files changed, 96 insertions(+), 1 deletion(-) diff --git a/Start_Windows/game.c b/Start_Windows/game.c index d8cc133..e29eee3 100644 --- a/Start_Windows/game.c +++ b/Start_Windows/game.c @@ -6,6 +6,8 @@ #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 */ @@ -13,7 +15,100 @@ // 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 direction = 0; + int step = 0; + int added = 0; + int addedWords = 0; + int positionX = 0; + int positionY = 0; + srand(time(NULL)); + + for(int i = 0; i < searchFieldLen; i++) + { + for(int j = 0; j < searchFieldLen; j++) + { + salad[i][j] = EMPTY_CHAR; + } + } + while(step <= wordCount) + { + int tries = 0; + int wordLength = 0; + direction = rand() % 1; + + for (int i = 0; i < MAX_WORD_LEN; i++) + { + if (words[step][i] == '\0') + break; + wordLength++; + } + if(direction == 0) + { + while(added <= 0 && tries < MAX_RAND_TRIES_PER_WORD){ + positionY = rand() % searchFieldLen-1; + positionX = rand() % searchFieldLen-1; + if(searchFieldLen - positionX >= wordLength) + { + + for(int i = 0; i < searchFieldLen; i++) + { + if(salad[positionY][positionX+i] != EMPTY_CHAR) + { + tries++; + break; + } + for (int j = 0; j < searchFieldLen; j++) + { + salad[positionY][positionX+j] = words[step][j]; + added = 1; + } + } + + } + else + { + tries++; + } + } + step++; + tries = 0; + added = 0; + } + if(direction == 1) + { + while(added <= 0 && tries < MAX_RAND_TRIES_PER_WORD){ + positionY = rand() % searchFieldLen-1; + positionX = rand() % searchFieldLen-1; + if(searchFieldLen - positionY >= wordLength) + { + + for(int i = 0; i < searchFieldLen; i++) + { + if(salad[positionY+i][positionX] != EMPTY_CHAR) + { + tries++; + break; + } + for (int j = 0; j < searchFieldLen; j++) + { + salad[positionY+j][positionX] = words[step][j]; + added = 1; + } + } + + } + else { + tries++; + } + step++; + tries = 0; + added = 0; + } + + } + + return addedWords; } // Prints the word salad to console diff --git a/Start_Windows/game.o b/Start_Windows/game.o index c2f15072795daf34ef635e5aeb705053df240a14..1edb3db1a4ec3e41b4ad6245b4bf6e66bff97fba 100644 GIT binary patch delta 824 zcmYjPT}TvB6h7zf+?hMhxQwprPRjbz&ngjRk`E?`woZ+a6s1I=4}&YMDQ>KSQ4b~y z!e+>h_r<^<=_Ps!tcW0t41EfOo+{`esu$~}mwecuJG(Q`fivHCe&#!8?wx0~1yfBe zRDx$;T(ur=xQAwGjfn2KYc2F40oZZhH&z`H^*PfLn~8 z#)gVHk^CUSCB~<4Ke;ILWlRu9=C1^p3jd0UxwHcC!dH?+e-HGW8nW}>?c7hp&JP&* zA@f|`YU;}mv~F8PZ{lwIwzXFx@kOg>uhZlm=UfEZxx?T0ZS{Z ze4ZquUL`O@c{J^0p@M%TkGr+$bY}K)CY!qCOgbsRxEv^k{TFa`5CO<^sUB}kd4UTd zuNvnYp@u=1xVHH-3 zt7Ru3#7;J2m)5EEM~Dfa@~4u?DiY8i0nqr4REIj>l{zrv_Qvow@1)5N1F6ogQE7&T z+o(K4jW!zlO%DT+LQ6Cz0MF7^0pt#imLt4-bA6unVRLXEy^MDTFylx7B7Y1F#qjrshXW4yg z&;}k?9twJdIpv980u;{Imj=I<232=ZPge#PGUY+_n0)@QasenQ7>ifynNprUE9a6j9|2Kst~J_V(h>Dl z-0G~gdbe8b;6~$KBLGb39(`92ZzcSIdnqBP@?GN2d%l&>1TA19Q{pa@Cg?Yr+s*cB zqq{oM#u2YM9U+p6&qlIoXFST8`8_egxxGI@>9Lqj9-PfR0q!_ZYHed*QyJZQKnUQP}!#Q`i@7c*#6U!1{gSWMv+`X)-k zL35$7Q_;(KERtGu+`dwp)~|m&V90ew8}#Unae}@YkLkX-iyob}PGOc-taWthleH-1 W-?1oZ`?wtzlXTh6V{PYwP52+#a(&hS diff --git a/Start_Windows/input.c b/Start_Windows/input.c index 405ba02..cdb5ece 100644 --- a/Start_Windows/input.c +++ b/Start_Windows/input.c @@ -14,7 +14,7 @@ int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) char* token; while(fgets(zeile, MAX_LINE_LEN, file)!=NULL) { - for (int i = 0; i < 1024; i++) + for (int i = 0; i < MAX_LINE_LEN; i++) { if (zeile[i] >= 'a'&&zeile[i] <= 'z') { diff --git a/Start_Windows/input.o b/Start_Windows/input.o index 8633804304114b8bbcd7a154b0e6620c393dc36f..bd8f22f4a1516d0fd10381bd0861cab3b0d3c07e 100644 GIT binary patch delta 14 VcmaDT^H64kI|rlAW)BWYHUKFl1W5n@ delta 14 VcmaDT^H64kI|rl6W)BWYHUKE~1VI1* diff --git a/Start_Windows/runTests.exe b/Start_Windows/runTests.exe index b2182ddbdacbcd80142c8a1e6ad2e5de4464b937..ca0a1a316b1d4e3dc913f68450209f7f52646e27 100644 GIT binary patch delta 12396 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