generated from freudenreichan/info2Praktikum-Wortsalat
Compare commits
7
Commits
ace90fe687
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c410d9287e | ||
|
|
4d09d52506 | ||
|
|
9a1f2d1d8a | ||
|
|
46a6f8c682 | ||
|
|
a763ea910e | ||
|
|
9b54d8913e | ||
|
|
19d0e9c170 |
No files matched your search
+10
-7
@@ -8,10 +8,6 @@
|
||||
#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 */
|
||||
|
||||
// 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)
|
||||
{
|
||||
@@ -30,6 +26,10 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi
|
||||
int wordLen = strlen(words[w]);
|
||||
int placed = 0;
|
||||
|
||||
if(wordLen > searchFieldLen){
|
||||
//printf("Word %s is too long!\n", words[w]);
|
||||
break;
|
||||
}
|
||||
//Try multiple times to find a valid position
|
||||
for(int attempt = 0; attempt < MAX_RAND_TRIES_PER_WORD && !placed; attempt++){
|
||||
//Random orientation: 0 = horizontal, 1 = vertical
|
||||
@@ -49,7 +49,7 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi
|
||||
}
|
||||
}
|
||||
|
||||
// Place word if position is valid
|
||||
//Place word
|
||||
if(canPlace){
|
||||
for(int i = 0; i < wordLen; i++){
|
||||
salad[row][col + i] = words[w][i];
|
||||
@@ -92,22 +92,25 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi
|
||||
}
|
||||
}
|
||||
|
||||
return wordsPlaced; // Return number of words successfully placed
|
||||
return wordsPlaced;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 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 < searchFieldLen; i++){
|
||||
for(int j = 0; j < searchFieldLen; j++){
|
||||
puts(salad[i][j]);
|
||||
printf("%c ", salad[i][j]);
|
||||
}
|
||||
puts("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Fill up Word salad
|
||||
void fillWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN]){
|
||||
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@ int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount)
|
||||
char readLine[MAX_LINE_LEN];
|
||||
|
||||
// collects the words line by line and adds them to the list, if its not exceeding the max word count
|
||||
while (fgets(readLine, sizeof(readLine), file) != (NULL && wordcount < maxWordCount)) {
|
||||
while (fgets(readLine, sizeof(readLine), file) != NULL && (wordcount < maxWordCount)) {
|
||||
|
||||
char word[MAX_WORD_LEN];
|
||||
int wordIndex = 0;
|
||||
@@ -59,7 +59,7 @@ int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount)
|
||||
//Edge case: If the last word ends on a '\0', right after the last letter
|
||||
if (wordIndex > 0 && wordcount < maxWordCount) {
|
||||
word[wordIndex] = '\0';
|
||||
strcp(words[wordcount], word);
|
||||
strcpy(words[wordcount], word);
|
||||
wordcount++;
|
||||
}
|
||||
|
||||
|
||||
+8
-4
@@ -7,6 +7,7 @@
|
||||
#define MAX_NUMBER_OF_WORDS 100
|
||||
#define SALAD_SIZE 20
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int exitCode = EXIT_SUCCESS;
|
||||
@@ -36,10 +37,13 @@ int main(int argc, char *argv[])
|
||||
// Create the word salad by placing words into grid
|
||||
placedWords = createWordSalad(wordSalad, SALAD_SIZE, words, wordCount);
|
||||
|
||||
// TODO:
|
||||
// Check if all words were successfully placed
|
||||
// Start the game if successful
|
||||
// error message if some words couldn't be placed
|
||||
if(placedWords < wordCount){
|
||||
printf("%d Words didn't fit!\n", wordCount-placedWords);
|
||||
return -1;
|
||||
}
|
||||
|
||||
showWordSalad(wordSalad, SALAD_SIZE);
|
||||
|
||||
|
||||
startGame(wordSalad, SALAD_SIZE, words, wordCount, 600);
|
||||
|
||||
|
||||
Reference in new issue
Block a user