M
also gut wenn ich das richtig sehe nur Großbuchstaben
als erstes füllen wir erstmal alle Felder Irgendwie also:
randomize //starten des Zufallsgenerators
raetsel[30][20];//2D-Array
char Buchstabe;
for (int pos=0;pos < 20)
for (int i=0;i < 30;i++) //30 Durchläufe
{
Buchstabe = random(26)+65; //Alle Buchstaben von A - Z möglich (nicht getestet)
raetsel[i][pos] = Buchstabe;
}
so damit ist das Quadrat mit zufälligen Buchstaben ausgefüllt.
Jetzt müssen nur noch die Worte rein also die Worte liegen in einem Array von char*. Hier das Array Worte: char *Worte[25] in einem zweiten array ist die Länge gespeichert heir int Laenge[25];
Jetzt das Reinsetzen:
int Zufall, x,y;
for (int Wort = 0;i< 25;i++) //für jedes Wort ein Durchlauf
{
Zufall = (random(89)+1)/10 // Damit das Ergebnis zufälliger ist
switch (Zufall){
case 1: //Wort normal nach rechts schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
x++
}
break;
case 2: //Wort normal nach links schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
x--;
}
break;
case 3: //Wort normal nach unten schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
y++;
}
break;
case 4: //Wort normal nach links schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
y--;
}
break;
case 5: //Wort normal diagonal schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
x--;
y--;
}
break;
case 6: //Wort normal diagonal schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
x--;
y++;
}
break;
case 7: //Wort normal diagonal schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
x++;
y--;
}
break;
case 8: //Wort normal diagonal schreiben
x = random(30);
char AktWort[Laenge[Wort]];
strcpy (AktWort,Worte[Wort]);
y = random(20);
for (int i=0;i< Laenge[Wort];i++)
{
Raetsel[x][y] = AktWort[i]
x++;
y++;
}
break;
}
}
So das ist eine Basis. Die if-Abfragen musst du schon selber einbauen. Außerdem ist das hier alles noch nicht getestet. Du solltest das schritt für schritt machen, evtl. laufen manche Schleifen noch zu oft oder zu wenig durch. Eine if Abfrage, ob das Wort in dem Schreibmodus überhaupt an die Stelle past wäre sinvoll. Wenn nicht einfach nur Wort-- machen. Dann wird die das solange wiederhaolt bis es passt. Auch darauf das ein Wort ein anderes überschreibt musst du noch was einbauen. Die Sache mit dem Abberchen ist einfach damit zu machen, das du mitzählst wie oft die wort-schleife durchläuft und du z.B. bei 400 abbrichst.