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 <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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user