Compare commits

...

5 Commits

4 changed files with 120 additions and 18 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
makefile/
.vscode/
*.exe
Start_Linux/makefile
Start_Windows/makefile

View File

@ -9,15 +9,47 @@
//TODO: Spiellogik implementieren:
/* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren
* restliche Felder mit zufälligen Buchstaben füllen */
void emptyArray();
int placeWord();
void fillEmptySpots();
// 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)
{
srand(time(NULL));
emptyArray(salad,MAX_SEARCH_FIELD_LEN * MAX_SEARCH_FIELD_LEN);
placeWord(salad,words);
fillEmptySpots(salad);
}
// Prints the word salad to console
void showWordSalad(const char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen)
{
for(int i = 0; i <= MAX_SEARCH_FIELD_LEN; i++ )
{
for(int j = 0; j <= MAX_SEARCH_FIELD_LEN; j++)
{
printf("[%c]",salad[i][j]);
}
printf("\n");
}
}
void emptyArray(char array[][], int arrayLength)
{
char* element = (char*) &array;
for(int i = 0; i < arrayLength; i++ )
{
*element = EMPTY_CHAR;
element++;
}
}
int placeWord(char intoArray[][], char insertedWord[][])
{
}
void fillEmptySpots(char useArray[][])
{
}

View File

@ -1,12 +1,38 @@
#include "input.h"
#include <string.h>
#include <ctype.h>
#include <string.h>
// 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
int readWords(FILE *file, char words[][MAX_WORD_LEN],unsigned int maxWordCount)
{
if (file == NULL)
{
perror("File couldn't be opened");
}
char fehlerhafterString[MAX_LINE_LEN];
char *teiler = " ;,.\n";
char *aktuellesWort;
int wortAnzahl = 0;
while (fgets(fehlerhafterString, sizeof(fehlerhafterString), file) != NULL && wortAnzahl < maxWordCount)
{
aktuellesWort = strtok(fehlerhafterString, teiler);
while (aktuellesWort != NULL && wortAnzahl < maxWordCount)
{
strncpy(words[wortAnzahl], aktuellesWort,sizeof(words[wortAnzahl]) - 1);
words[wortAnzahl][sizeof(words[wortAnzahl]) - 1] = '\0';
wortAnzahl++; // Nächstes Wort
aktuellesWort = strtok(NULL, teiler); // Nächstes Token
}
}
return wortAnzahl; // Anzahl der eingelesenen Wörter
}

View File

@ -1,12 +1,54 @@
#include "input.h"
#include <string.h>
#include <ctype.h>
#include <string.h>
// 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
int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount)
{
int readWords(FILE *file, char words[][MAX_WORD_LEN],
unsigned int maxWordCount) {
if (file == NULL) {
perror("File couldn't be opened");
}
// zunächst fehlerhaften String einlesen und in anderem Array
// zwischenspeichern
char fehlerhafterString[MAX_LINE_LEN];
char *teiler = " ;,.\n";
char *aktuellesWort;
int wortAnzahl = 0;
while (fgets(fehlerhafterString, sizeof(fehlerhafterString), file) !=
NULL && // während mit fgets alle Zeichen aus dem file eingelesen
// werden
wortAnzahl < maxWordCount) {
aktuellesWort =
strtok(fehlerhafterString, teiler); // Erstes Wort mit strtok aus dem
// fehlerhaften String herauslösen
while (aktuellesWort != NULL &&
wortAnzahl < maxWordCount) { // while strtok nicht am Ende ist und
// noch Wörter in words passen
strncpy(words[wortAnzahl], aktuellesWort,
sizeof(words[wortAnzahl]) -
1); // mit strcpy das aktuelle Wort in words kopieren
words[wortAnzahl][sizeof(words[wortAnzahl]) - 1] =
'\0'; // Nullterminator mit sizeof des aktuellen Worts - 1 an Ende des
// Worts setzen
wortAnzahl++; // Nächstes Wort
aktuellesWort = strtok(NULL, teiler); // Nächstes Token
}
}
return wortAnzahl; // Anzahl der eingelesenen Wörter
}