all tests run YAYYYY
This commit is contained in:
1 parent
da9cbb74ae
commit
c9515f0352
3 files changed
+37
-7
No files matched your search
+36
-6
@@ -16,25 +16,47 @@ int tryPlaceHorizontal(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], u
|
|||||||
// Creates the word salad by placing words randomly and filling empty spaces
|
// 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, const char words[][MAX_WORD_LEN], unsigned int wordCount)
|
||||||
{
|
{
|
||||||
|
// initialise with '\0'
|
||||||
|
for (int x = MAX_SEARCH_FIELD_LEN - 1; x >= 0; --x) {
|
||||||
|
for (int y = MAX_SEARCH_FIELD_LEN - 1; y >= 0; --y) {
|
||||||
|
salad[x][y] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// place words randomly
|
// place words randomly
|
||||||
int placedWords = 0;
|
int placedWords = 0;
|
||||||
srand((unsigned int)time(NULL));
|
srand((unsigned int)time(NULL));
|
||||||
for (int word = 0; word < wordCount; word++)
|
for (int word = 0; word < wordCount; word++)
|
||||||
{
|
{
|
||||||
|
// test length:
|
||||||
// (re-)try randomly
|
// (re-)try randomly
|
||||||
int retries = searchFieldLen * 2;
|
int retries = searchFieldLen * 2;
|
||||||
int placed = 0;
|
int placed = 0;
|
||||||
|
if(strlen(words[word]) >= searchFieldLen) break;
|
||||||
|
|
||||||
// int vertical = rand() / (RAND_MAX / 2);
|
// int vertical = rand() / (RAND_MAX / 2);
|
||||||
int vertical = 1;
|
int vertical = 1;
|
||||||
while (!placed && retries > 0)
|
while (!placed && retries > 0)
|
||||||
{
|
{
|
||||||
int x = rand() / (RAND_MAX / (!vertical ? searchFieldLen - 1 - strlen(words[word]) : searchFieldLen));
|
unsigned int x = 0;
|
||||||
int y = rand() / (RAND_MAX / (vertical ? searchFieldLen - 1 - strlen(words[word]) : searchFieldLen));
|
unsigned int y = 0;
|
||||||
printf("Placed %s at %d,%d\n", words[word], x, y);
|
|
||||||
|
if (vertical) {
|
||||||
|
int max_x = searchFieldLen - 1;
|
||||||
|
int max_y = searchFieldLen - 1 - strlen(words[word]);
|
||||||
|
x = rand() / (RAND_MAX / max_x);
|
||||||
|
y = rand() / (RAND_MAX / max_y);
|
||||||
|
} else {
|
||||||
|
int max_x = searchFieldLen - 1 - strlen(words[word]);
|
||||||
|
int max_y = searchFieldLen - 1;
|
||||||
|
x = rand() / (RAND_MAX / max_x);
|
||||||
|
y = rand() / (RAND_MAX / max_y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// printf("Placing %s at %d,%d\n", words[word], x, y);
|
||||||
placed = tryPlaceVertical(salad, searchFieldLen, words[word], x, y);
|
placed = tryPlaceVertical(salad, searchFieldLen, words[word], x, y);
|
||||||
|
|
||||||
if (placed) printf("Placed %s at %d,%d!\n", words[word], x, y);
|
// if (placed) printf("Placed %s at %d,%d!\n", words[word], x, y);
|
||||||
|
|
||||||
if (--retries < 1)
|
if (--retries < 1)
|
||||||
break;
|
break;
|
||||||
@@ -44,10 +66,16 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi
|
|||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
placedWords++;
|
placedWords++;
|
||||||
// printf("Placed!\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fill empty spaces
|
// fill empty spaces
|
||||||
|
for (int x = searchFieldLen - 1; x >= 0; --x) {
|
||||||
|
for (int y = searchFieldLen - 1; y >= 0; --y) {
|
||||||
|
if (salad[x][y] == '\0') {
|
||||||
|
salad[x][y] = 'A' + (rand() / (RAND_MAX / 26));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return placedWords;
|
return placedWords;
|
||||||
}
|
}
|
||||||
@@ -59,8 +87,10 @@ int tryPlaceVertical(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], uns
|
|||||||
|
|
||||||
for (int testY = y; testY < (y + wordLen); testY++)
|
for (int testY = y; testY < (y + wordLen); testY++)
|
||||||
{
|
{
|
||||||
if (salad[testY][x] != '\0')
|
if (salad[testY][x] != '\0') {
|
||||||
|
// printf("Besetzt!\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if ok then put my word in
|
// if ok then put my word in
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ graphicalGame.o: $(codefolder)/graphicalGame.c
|
|||||||
TEST_BIN = runTests
|
TEST_BIN = runTests
|
||||||
|
|
||||||
test: input.o game.o $(codefolder)/unit_tests.c $(unityfolder)/unity.c
|
test: input.o game.o $(codefolder)/unit_tests.c $(unityfolder)/unity.c
|
||||||
$(CC) -Wall -I$(unityfolder) -o $(TEST_BIN) input.o game.o $(codefolder)/unit_tests.c $(unityfolder)/unity.c
|
$(CC) -Wall -g -I$(unityfolder) -o $(TEST_BIN) input.o game.o $(codefolder)/unit_tests.c $(unityfolder)/unity.c
|
||||||
# --------------------------
|
# --------------------------
|
||||||
# Clean
|
# Clean
|
||||||
# --------------------------
|
# --------------------------
|
||||||
|
|||||||
Binary file not shown.
Reference in new issue
Block a user