Start_Windows/game.c aktualisiert

This commit is contained in:
Simon Schuerer 2025-11-07 07:28:00 +00:00
parent 1a68c9389f
commit b26eb961c9

View File

@ -3,30 +3,31 @@
#include <stdlib.h> // Für Funktionen wie rand(), srand(), malloc() etc.
#include <string.h> // Für Stringfunktionen wie strlen()
#define MAX_RAND_TRIES_PER_WORD 10 // Maximale Versuche pro Wort (nicht direkt verwendet im Code)
#define EMPTY_CHAR 0 // Definition eines leeren Zeichens (nicht direkt verwendet im Code)
#define MAX_RAND_TRIES_PER_WORD 10 // Maximale Versuche pro Wort
#define EMPTY_CHAR 0 // Definition eines leeren Zeichens
/* Wörter aus der Wortliste zufällig horizontal oder vertikal platzieren
* restliche Felder mit zufälligen Buchstaben füllen */
// Aufzählungstyp zur Richtungsprüfung
typedef enum {
typedef enum { // DIR wegen Direktion - Richtung
DIR_DOWN, // Wort wird vertikal nach unten platziert
DIR_RIGHT, // Wort wird horizontal nach rechts platziert
DIR_FAILURE, // Platzierung nicht möglich
} check_dir_e;
} check_dir_e; // Variable vom Typ der Aufzählung zu deklarieren
// Prüft, ob ein Wort an einer bestimmten Position und Richtung platziert werden kann
static check_dir_e check_field(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN],
static check_dir_e check_field(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], //nur innerhalb der aktuellen Datei sichtbar ( static )
unsigned int searchFieldLen, const unsigned int word_len,
const int pos_x, const int pos_y)
{
const int random_direction = rand() % 2; // Zufällige Richtung: 0 = unten, 1 = rechts
const int random_direction = rand() % 2; // Zufällige Richtung: 0 = unten, 1 = rechts ( zufall für Wortplatzierung)
// Prüft welche Richtuung möglich ist
// Prüft, ob Richtung rechts möglich ist
if (random_direction == 1) {
for (int i = 0; i < word_len; i++) {
if (pos_x + i >= searchFieldLen || salad[pos_y][pos_x + i] != '\0') {
for (int i = 0; i < word_len; i++) { // Platziert die Buchstaben. Falls keine "0" ist wird abgebrochen und wort gelöscht
if (pos_x + i >= searchFieldLen || salad[pos_y][pos_x + i] != '\0') { // Bedingung für die Pltzierung
break; // Abbruch, wenn außerhalb des Feldes oder Feld bereits belegt
}
if (i == word_len - 1) {
@ -71,7 +72,7 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN],
// Schleife über alle Wörter
for (cnt = 0; cnt < wordCount; cnt++) {
check_dir_e direction = DIR_FAILURE; // Anfangszustand: keine Richtung möglich
int tries = 0;
int tries = 0; // fehlercounterzähler für nicht platzierte Wörter
// Versucht bis zu 1000-mal ein Wort zu platzieren
while (direction == DIR_FAILURE && tries < 1000) {