Hallo zusammen!
Ich hoffe, Ihr könnt mir hier helfen.
Ich habe vor, einen SUDOKU-Generator zu schreiben. Dafür möchte ich vorerst die "banale"-Variante machen. Einfach alles ausprobieren, bis es passt. Dass das nicht sonderlich effektiv ist, weiß ich selbst, modifikationen kommen später hinzu.
Für den Generator habe ich erst einmal 3 voneinander unabhängige Felder generieren lassen. Nämlich die Felder oben rechts, mitte mitte und unten links
[][][x]
[][x][]
[x][][]
da diese Felder nicht voneinander abhängig sind, brauche ich nur den Block selbst auf Zahlen von 1-9 überprüfen. Dafür habe ich die Funktion "pruefeBlock" geschrieben. Um die Spalten zu überprüfen gibt es die Funktion "pruefeSpalte" und für die Zeilen habe ich die Funktion "pruefeZeile" geschrieben.
Erst wenn alle Funktionen ein "false" zurückgeben, wird die zufällig generierte Zahl geschrieben. Leider macht die Funktion "pruefeZeile" Ärger...
Problem:
Sobald ich eine Zahl manuell in das erste Kästchen lege (hier ist es die Zahl 7), um die Richtigkeit der Funktion zu prüfen stürzt die Funktion regelmäßig ab und das Programm friert ein. Das passiert nur manchmal. Ab und zu. Oft werden die Zahlen auch richtig generiert. Das Problem tritt erst seit der neuen Funktion "pruefeZeile" auf...
Dazu folgender Quelltext der Funktion "pruefeZeile":
Versteht ihr mein Problem?
Ich kann auch gerne das File anhängen.
Ich hoffe, ihr habt eine Lösung, denn ich bin hier langsam am verzweifeln.
Mit freundlichen Grüßen
derFarmer
Ich hoffe, Ihr könnt mir hier helfen.
Ich habe vor, einen SUDOKU-Generator zu schreiben. Dafür möchte ich vorerst die "banale"-Variante machen. Einfach alles ausprobieren, bis es passt. Dass das nicht sonderlich effektiv ist, weiß ich selbst, modifikationen kommen später hinzu.
Für den Generator habe ich erst einmal 3 voneinander unabhängige Felder generieren lassen. Nämlich die Felder oben rechts, mitte mitte und unten links
[][][x]
[][x][]
[x][][]
da diese Felder nicht voneinander abhängig sind, brauche ich nur den Block selbst auf Zahlen von 1-9 überprüfen. Dafür habe ich die Funktion "pruefeBlock" geschrieben. Um die Spalten zu überprüfen gibt es die Funktion "pruefeSpalte" und für die Zeilen habe ich die Funktion "pruefeZeile" geschrieben.
Erst wenn alle Funktionen ein "false" zurückgeben, wird die zufällig generierte Zahl geschrieben. Leider macht die Funktion "pruefeZeile" Ärger...
Problem:
Sobald ich eine Zahl manuell in das erste Kästchen lege (hier ist es die Zahl 7), um die Richtigkeit der Funktion zu prüfen stürzt die Funktion regelmäßig ab und das Programm friert ein. Das passiert nur manchmal. Ab und zu. Oft werden die Zahlen auch richtig generiert. Das Problem tritt erst seit der neuen Funktion "pruefeZeile" auf...
Dazu folgender Quelltext der Funktion "pruefeZeile":
Code:
private bool pruefeZeile(Int32 Feldwert, Int32 Block, Int32 Feld)
{
//Wenn das Feld mit der Zahl belegt werden darf, gibt die Funktion false zurück ;)
//Wenn das Feld nicht belegt werden darf, gibt die Funktion true zurück
Int32 X = Block, Y = Feld, StopY, StopX;
//Y wird auf das erste Feld der Zeile gesetzt
if (Y == 2)
Y--;
if (Y == 3)
Y-=2;
if (Y == 5)
Y--;
if (Y == 6)
Y -= 2;
if (Y == 8)
Y--;
if (Y==9)
Y-=2;
//X wird auf den ersten Block der Zeile gesetzt
if (X == 2)
X--;
if (X == 5)
X--;
if (X == 7)
X--;
if (X % 3 == 0)
X -= 2;
StopX = X;
StopY = Y;
//Es wird Feld für Feld geprüft, ob die Zahl in der Zeile schon vorhanden ist
do
{
Y = StopY;
do
{
if (Feldliste[X, Y] == Feldwert && (Y != Feld&&X!=Block))
return (true);
Y ++;
} while (Y < StopY + 3);
X ++;
}
while (X <= StopX + 2);
return (false);
}
Versteht ihr mein Problem?
Ich kann auch gerne das File anhängen.
Ich hoffe, ihr habt eine Lösung, denn ich bin hier langsam am verzweifeln.
Mit freundlichen Grüßen
derFarmer
Zuletzt bearbeitet: