Start_Windows/game.c aktualisiert
This commit is contained in:
parent
1a68c9389f
commit
b26eb961c9
@ -3,30 +3,31 @@
|
|||||||
#include <stdlib.h> // Für Funktionen wie rand(), srand(), malloc() etc.
|
#include <stdlib.h> // Für Funktionen wie rand(), srand(), malloc() etc.
|
||||||
#include <string.h> // Für Stringfunktionen wie strlen()
|
#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 MAX_RAND_TRIES_PER_WORD 10 // Maximale Versuche pro Wort
|
||||||
#define EMPTY_CHAR 0 // Definition eines leeren Zeichens (nicht direkt verwendet im Code)
|
#define EMPTY_CHAR 0 // Definition eines leeren Zeichens
|
||||||
|
|
||||||
/* 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 */
|
||||||
|
|
||||||
// Aufzählungstyp zur Richtungsprüfung
|
// Aufzählungstyp zur Richtungsprüfung
|
||||||
typedef enum {
|
typedef enum { // DIR wegen Direktion - Richtung
|
||||||
DIR_DOWN, // Wort wird vertikal nach unten platziert
|
DIR_DOWN, // Wort wird vertikal nach unten platziert
|
||||||
DIR_RIGHT, // Wort wird horizontal nach rechts platziert
|
DIR_RIGHT, // Wort wird horizontal nach rechts platziert
|
||||||
DIR_FAILURE, // Platzierung nicht möglich
|
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
|
// 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,
|
unsigned int searchFieldLen, const unsigned int word_len,
|
||||||
const int pos_x, const int pos_y)
|
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
|
// Prüft, ob Richtung rechts möglich ist
|
||||||
if (random_direction == 1) {
|
if (random_direction == 1) {
|
||||||
for (int i = 0; i < word_len; i++) {
|
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') {
|
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
|
break; // Abbruch, wenn außerhalb des Feldes oder Feld bereits belegt
|
||||||
}
|
}
|
||||||
if (i == word_len - 1) {
|
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
|
// Schleife über alle Wörter
|
||||||
for (cnt = 0; cnt < wordCount; cnt++) {
|
for (cnt = 0; cnt < wordCount; cnt++) {
|
||||||
check_dir_e direction = DIR_FAILURE; // Anfangszustand: keine Richtung möglich
|
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
|
// Versucht bis zu 1000-mal ein Wort zu platzieren
|
||||||
while (direction == DIR_FAILURE && tries < 1000) {
|
while (direction == DIR_FAILURE && tries < 1000) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user