Compare commits
13
Commits
683b0fd86e
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
284cc80e9f | ||
|
|
6ea1ec75e0 | ||
|
|
596e0a5519 | ||
|
|
cbf5f85caf | ||
|
|
ab558de8b3 | ||
|
|
187e626191 | ||
|
|
aef73683bc | ||
|
|
dc58f1e4a9 | ||
|
|
74360620be | ||
|
|
1cc06c0e2e | ||
|
|
23c1ae2059 | ||
|
|
4cbd8d51c6 | ||
|
|
8ae62a2f90 |
No files matched your search
+19
@@ -273,4 +273,23 @@ $RECYCLE.BIN/
|
|||||||
# Windows shortcuts
|
# Windows shortcuts
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
|
|
||||||
|
### Executable ###
|
||||||
|
*.app
|
||||||
|
*.bat
|
||||||
|
*.cgi
|
||||||
|
*.com
|
||||||
|
*.exe
|
||||||
|
*.gadget
|
||||||
|
*.jar
|
||||||
|
*.pif
|
||||||
|
*.vb
|
||||||
|
*.wsf
|
||||||
|
|
||||||
|
|
||||||
|
### Kate ###
|
||||||
|
# Swap Files #
|
||||||
|
.*.kate-swp
|
||||||
|
.swp.*
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,visualstudiocode,clion,eclipse
|
# End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,visualstudiocode,clion,eclipse
|
||||||
+88
-1
@@ -1,7 +1,7 @@
|
|||||||
#include "game.h"
|
#include "game.h"
|
||||||
#include <time.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
#define MAX_RAND_TRIES_PER_WORD 10
|
#define MAX_RAND_TRIES_PER_WORD 10
|
||||||
#define EMPTY_CHAR 0
|
#define EMPTY_CHAR 0
|
||||||
@@ -13,5 +13,92 @@
|
|||||||
// 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)
|
||||||
{
|
{
|
||||||
|
unsigned int placedWords = 0;
|
||||||
|
|
||||||
|
emptyField(searchFieldLen, salad);
|
||||||
|
|
||||||
|
for(int i = 0; i < wordCount; i++)
|
||||||
|
{
|
||||||
|
placedWords += placement(salad, searchFieldLen, words[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fillRandAlpha(searchFieldLen, salad);
|
||||||
|
|
||||||
|
return placedWords;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char alphaRand()
|
||||||
|
{
|
||||||
|
int letter = (rand() % 26) + 'A';
|
||||||
|
|
||||||
|
return (char) letter;
|
||||||
|
}
|
||||||
|
|
||||||
|
int placement(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char *word)
|
||||||
|
{
|
||||||
|
int saladX = rand() % ( searchFieldLen - strlen(word) );
|
||||||
|
int saladY = rand() % ( searchFieldLen - strlen(word) );
|
||||||
|
|
||||||
|
if(rand() % 2)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < strlen(word); i++)
|
||||||
|
{
|
||||||
|
if(isalpha(salad[saladX][saladY + i]))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
for(int i = 0; i < strlen(word); i++)
|
||||||
|
{
|
||||||
|
salad[saladX][saladY + i] = word[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(int i = 0; i < strlen(word); i++)
|
||||||
|
{
|
||||||
|
if(isalpha(salad[saladX + i][saladY]))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
for(int i = 0; i < strlen(word); i++)
|
||||||
|
{
|
||||||
|
salad[saladX + i][saladY] = word[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void emptyField(unsigned int searchFieldLen, char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN])
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i < searchFieldLen; i++)
|
||||||
|
{
|
||||||
|
for(size_t j = 0; j < searchFieldLen; j++)
|
||||||
|
{
|
||||||
|
salad[i][j] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char fillRandAlpha(unsigned int searchFieldLen, char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN])
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i < searchFieldLen; i++)
|
||||||
|
{
|
||||||
|
for(size_t j = 0; j < searchFieldLen; j++)
|
||||||
|
{
|
||||||
|
if(!isalpha(salad[i][j]))
|
||||||
|
{
|
||||||
|
salad[i][j] = alphaRand();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -7,4 +7,12 @@
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
|
void emptyField(unsigned int searchFieldLen, char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN]);
|
||||||
|
|
||||||
|
char fillRandAlpha(unsigned int searchFieldLen, char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN]);
|
||||||
|
|
||||||
|
int placement(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char *word);
|
||||||
|
|
||||||
|
char alphaRand();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Binary file not shown.
Binary file not shown.
@@ -2,11 +2,47 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt.
|
// 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
|
// Read words from file and store in 'words' array
|
||||||
|
|
||||||
int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount)
|
int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount)
|
||||||
{
|
{
|
||||||
|
int wordcount = 0;
|
||||||
|
char buffer[256];
|
||||||
|
char *line = fgets(buffer, sizeof(buffer), file);
|
||||||
|
|
||||||
|
while(line != NULL)
|
||||||
|
{
|
||||||
|
char* word = strtok(line, " ,;");
|
||||||
|
|
||||||
|
while (word != NULL)
|
||||||
|
{
|
||||||
|
strncpy(words[wordcount], word, strlen(word));
|
||||||
|
|
||||||
|
wordcount += 1;
|
||||||
|
|
||||||
|
word = strtok(NULL, " ,;\t\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
line = fgets(buffer, sizeof(buffer), file);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < wordcount; i++)
|
||||||
|
{
|
||||||
|
for(int j = 0; j < strlen(words[i]); j++)
|
||||||
|
{
|
||||||
|
words[i][j] = toupper(words[i][j]);
|
||||||
|
|
||||||
|
if(words[i][j] == '\n')
|
||||||
|
{
|
||||||
|
words[i][j] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return wordcount;
|
||||||
}
|
}
|
||||||
Binary file not shown.
+25
-3
@@ -3,6 +3,9 @@
|
|||||||
#include "input.h"
|
#include "input.h"
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
#include "graphicalGame.h"
|
#include "graphicalGame.h"
|
||||||
|
#include <errno.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
#define MAX_NUMBER_OF_WORDS 100
|
#define MAX_NUMBER_OF_WORDS 100
|
||||||
#define SALAD_SIZE 20
|
#define SALAD_SIZE 20
|
||||||
@@ -11,6 +14,8 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
int exitCode = EXIT_SUCCESS;
|
int exitCode = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
// Check if the correct number of arguments is provided
|
// Check if the correct number of arguments is provided
|
||||||
if(argc != 2)
|
if(argc != 2)
|
||||||
{
|
{
|
||||||
@@ -34,13 +39,30 @@ int main(int argc, char *argv[])
|
|||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
||||||
// Create the word salad by placing words into grid
|
// Create the word salad by placing words into grid
|
||||||
placedWords = createWordSalad(wordSalad, SALAD_SIZE, words, wordCount);
|
//placedWords = createWordSalad(wordSalad, SALAD_SIZE, words, wordCount);
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// Check if all words were successfully placed
|
// Check if all words were successfully placed
|
||||||
// Start the game if successful
|
for(int i = 0; i < 10000; i++)
|
||||||
// error message if some words couldn't be placed
|
{
|
||||||
|
placedWords = createWordSalad(wordSalad, SALAD_SIZE, words, wordCount);
|
||||||
|
|
||||||
|
if(placedWords == wordCount)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Start the game if successful
|
||||||
|
startGame(wordSalad, SALAD_SIZE, words, wordCount, 800);
|
||||||
|
|
||||||
|
return exitCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// error message if some words couldn't be placed
|
||||||
|
fprintf(stderr, "Could not start wordsalad. ");
|
||||||
|
printf("Out of %d words only %d could be placed.\n", wordCount, placedWords);
|
||||||
|
puts("GOOD LUCK for getting this game started :)");
|
||||||
|
exitCode = EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
Executable
BIN
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
Hund,Katze; Maus
|
||||||
Whitespace-only changes.
@@ -0,0 +1,3 @@
|
|||||||
|
Apfel
|
||||||
|
Banane
|
||||||
|
Kiwi
|
||||||
@@ -49,6 +49,8 @@ void test_readWords_with_delimiters(void) {
|
|||||||
int count = readWords(f, words, 10);
|
int count = readWords(f, words, 10);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
char cwd[PATH_MAX];
|
||||||
|
|
||||||
TEST_ASSERT_EQUAL_INT(3, count);
|
TEST_ASSERT_EQUAL_INT(3, count);
|
||||||
TEST_ASSERT_EQUAL_STRING("HUND", words[0]);
|
TEST_ASSERT_EQUAL_STRING("HUND", words[0]);
|
||||||
TEST_ASSERT_EQUAL_STRING("KATZE", words[1]);
|
TEST_ASSERT_EQUAL_STRING("KATZE", words[1]);
|
||||||
@@ -171,3 +173,4 @@ int main(void) {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Reference in new issue
Block a user