Compare commits
11
Commits
1cb59edc7a
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
117d041da2 | ||
|
|
38864ec511 | ||
|
|
da674a4ef6 | ||
|
|
00913fe318 | ||
|
|
5b6eae4c18 | ||
|
|
fe390a6f5f | ||
|
|
eb161c9b2a | ||
|
|
58b94eb417 | ||
|
|
0ad0165c1a | ||
|
|
8f0b159412 | ||
|
|
c54efdbf43 |
No files matched your search
@@ -1 +1,10 @@
|
|||||||
Ich wollte auch eine README!
|
# Aufgabenteilung
|
||||||
|
|
||||||
|
Jamin:
|
||||||
|
Game
|
||||||
|
|
||||||
|
Flo:
|
||||||
|
Input
|
||||||
|
Main
|
||||||
|
|
||||||
|
Schwarzes Brett :shipit: :
|
||||||
@@ -6,6 +6,9 @@
|
|||||||
#define MAX_RAND_TRIES_PER_WORD 10
|
#define MAX_RAND_TRIES_PER_WORD 10
|
||||||
#define EMPTY_CHAR 0
|
#define EMPTY_CHAR 0
|
||||||
|
|
||||||
|
// Funktion die eine zufällige Zahl von 0-range zurückgibt
|
||||||
|
int randomNumberInRange(unsigned int range);
|
||||||
|
|
||||||
//TODO: Spiellogik implementieren:
|
//TODO: Spiellogik implementieren:
|
||||||
/* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren
|
/* * Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren
|
||||||
* restliche Felder mit zufälligen Buchstaben füllen */
|
* restliche Felder mit zufälligen Buchstaben füllen */
|
||||||
@@ -13,5 +16,103 @@
|
|||||||
// 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)
|
||||||
{
|
{
|
||||||
|
//Rückgabewert ist die Anzahl an platzierten Wörtern
|
||||||
|
srand(time(NULL));
|
||||||
|
int placedWordsSuccess = 0;
|
||||||
|
|
||||||
|
//Array auf Spielfläche initialisieren mit leerem Char
|
||||||
|
for (int i = 0; i < searchFieldLen; i++) {
|
||||||
|
for (int u = 0; u < searchFieldLen; u++) {
|
||||||
|
salad[i][u] = EMPTY_CHAR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Schleife bis alle Wörter durchlaufen
|
||||||
|
for (int wordToBePlaced = 0; wordToBePlaced < wordCount; wordToBePlaced++) {
|
||||||
|
int triesPerWord = 1;
|
||||||
|
while (triesPerWord <= MAX_RAND_TRIES_PER_WORD) {
|
||||||
|
unsigned int xPosition = randomNumberInRange(searchFieldLen-1);
|
||||||
|
unsigned int yPosition = randomNumberInRange(searchFieldLen-1);
|
||||||
|
|
||||||
|
if (salad[yPosition][xPosition] != EMPTY_CHAR) {
|
||||||
|
triesPerWord++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int putWordHorizontal = randomNumberInRange(1);
|
||||||
|
|
||||||
|
//Horizontal einsetzen
|
||||||
|
if (putWordHorizontal) {
|
||||||
|
int writePossible = 1;
|
||||||
|
//Schleife um alle Stellen auf EMPTY_SPACE zu prüfen
|
||||||
|
for (int t = 0; t < MAX_WORD_LEN; t++) {
|
||||||
|
if (words[wordToBePlaced][t] == EMPTY_CHAR) break;
|
||||||
|
if (xPosition + t >= searchFieldLen) {
|
||||||
|
triesPerWord++;
|
||||||
|
writePossible = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (salad[yPosition][xPosition + t] != EMPTY_CHAR) {
|
||||||
|
triesPerWord++;
|
||||||
|
writePossible = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Nach Prüfung Wort einsetzen
|
||||||
|
if (writePossible) {
|
||||||
|
for (int t = 0; t < MAX_WORD_LEN; t++) {
|
||||||
|
if (words[wordToBePlaced][t] == EMPTY_CHAR) break;
|
||||||
|
salad[yPosition][xPosition + t] = words[wordToBePlaced][t];
|
||||||
|
}
|
||||||
|
placedWordsSuccess++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sonst vertikal einsetzen
|
||||||
|
else {
|
||||||
|
int writePossible = 1;
|
||||||
|
//Auf EMPTY_SPACE prüfen
|
||||||
|
for (int t = 0; t < MAX_WORD_LEN; t++) {
|
||||||
|
if (words[wordToBePlaced][t] == EMPTY_CHAR) break;
|
||||||
|
if (yPosition + t >= searchFieldLen) {
|
||||||
|
triesPerWord++;
|
||||||
|
writePossible = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (salad[yPosition + t][xPosition] != EMPTY_CHAR) {
|
||||||
|
triesPerWord++;
|
||||||
|
writePossible = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Einsetzen, wenn Felder frei
|
||||||
|
if (writePossible) {
|
||||||
|
for (int t = 0; t < MAX_WORD_LEN; t++) {
|
||||||
|
if (words[wordToBePlaced][t] == EMPTY_CHAR) break;
|
||||||
|
salad[yPosition + t][xPosition] = words[wordToBePlaced][t];
|
||||||
|
}
|
||||||
|
placedWordsSuccess++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Restliche Felder mit Random-Buchstaben füllen
|
||||||
|
for (int zeile = 0; zeile < searchFieldLen; zeile++) {
|
||||||
|
for (int spalte = 0; spalte < searchFieldLen; spalte++) {
|
||||||
|
if (salad[zeile][spalte] == EMPTY_CHAR) {
|
||||||
|
salad[zeile][spalte] = (char)(randomNumberInRange(25)+65); //Buchstabe (ASCII) 65 - 90
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return placedWordsSuccess; //Anzahl eingeschriebener Wörter zurückgeben
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int randomNumberInRange(unsigned int range) {
|
||||||
|
int number = (rand() % (range+1));
|
||||||
|
return number;
|
||||||
|
}
|
||||||
+33
-3
@@ -6,7 +6,37 @@
|
|||||||
// 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){
|
||||||
{
|
|
||||||
|
char lineRead[MAX_LINE_LEN] = {};
|
||||||
|
char *splitters = ",; \n";
|
||||||
|
int wordsRead = 0;
|
||||||
|
|
||||||
|
while(fgets(lineRead,MAX_LINE_LEN,file) != NULL && wordsRead < maxWordCount){
|
||||||
|
char *token = strtok(lineRead, splitters);
|
||||||
|
|
||||||
|
while(token != NULL && wordsRead < maxWordCount){
|
||||||
|
|
||||||
|
strcpy(words[wordsRead],token);
|
||||||
|
//Kleinbuchstaben -> Grossbuchstaben
|
||||||
|
int len = strlen(words[wordsRead]);
|
||||||
|
for(int i = 0; i < len; i++){
|
||||||
|
if(islower(words[wordsRead][i])){
|
||||||
|
words[wordsRead][i] = toupper(words[wordsRead][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wordsRead++;
|
||||||
|
token = strtok(NULL, splitters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return wordsRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
+6
-1
@@ -40,7 +40,12 @@ int main(int argc, char *argv[])
|
|||||||
// Check if all words were successfully placed
|
// Check if all words were successfully placed
|
||||||
// Start the game if successful
|
// Start the game if successful
|
||||||
// error message if some words couldn't be placed
|
// error message if some words couldn't be placed
|
||||||
|
if(wordCount == placedWords){
|
||||||
|
startGame(wordSalad,SALAD_SIZE,words,wordCount,800);
|
||||||
|
}else{
|
||||||
|
printf("error. not enough words could be placed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,6 +22,23 @@ codefolder = .
|
|||||||
wordsalad_initial:
|
wordsalad_initial:
|
||||||
$(CC) -o wordsalad_initial -L. $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a $(LDFLAGS)
|
$(CC) -o wordsalad_initial -L. $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a $(LDFLAGS)
|
||||||
|
|
||||||
|
#--------------
|
||||||
|
# Mein Test
|
||||||
|
#--------------
|
||||||
|
|
||||||
|
my_wordsalad_input: input.o $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a
|
||||||
|
$(CC) $(CFLAGS) -o my_wordsalad_input input.o $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a $(LDFLAGS)
|
||||||
|
|
||||||
|
final_wordsalad: main.o game.o input.o $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a
|
||||||
|
$(CC) $(CFLAGS) -o final_wordsalad main.o game.o input.o $(BINARIES)/libraylib.a $(LDFLAGS) $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a $(LDFLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# NUR Game Test
|
||||||
|
# --------------------------
|
||||||
|
wordsalad_mein_game: game.o input.o $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a
|
||||||
|
$(CC) $(CFLAGS) -o wordsalad_mein_test game.o input.o $(BINARIES)/libraylib.a $(LDFLAGS) $(BINARIES)/libwordsalad_complete.a $(BINARIES)/libraylib.a $(LDFLAGS)
|
||||||
|
|
||||||
# --------------------------
|
# --------------------------
|
||||||
# Normales Spiel bauen
|
# Normales Spiel bauen
|
||||||
# --------------------------
|
# --------------------------
|
||||||
|
|||||||
Reference in new issue
Block a user