Autor Beitrag
JasonVorhees
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 06.03.07 17:42 
hallöchen leute,

ich weiß sudoko als thema bei delphi nervt euch sicherlich schon ... und ja ich habe die forum suche auch fein genutzt :) aber da ich selber nicht soooooo doll bewandert bin was delphi angeht habe ich mich an meinen eigenen Code gesetzt und versucht einen Generator zu erstellen ... ich habe zwei 2d-felder ... einmal für die Reihe und für die spalte.
dort wird dann immer geschaut ob die zahl in der reihe oder spalte schon vorhanden ist ... eben das funktioniert auch recht gut, ich bekomme aber kein komplettes feld (mein erstes problem)

mein zweites problem ist die prüfung der 3x3 felder ... da hab ich keine ahnung wie ich das gut umsetzen soll vorallem wenn fehlbelegungen der zellen auftreten, da zahlen doppelt vergeben sind.

ich habe online schon codes gefunden und ansätze aber die sind mir alle zu schwer und ich steig da nicht durch ... hoffe ihr könnt mit meinem code was anfangen und mir vllt helfen ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.generierenButtonClick(Sender: TObject);
var    i,spalte,reihe,zahl: integer;
    reihe_feld,spalte_feld: array[0..8,1..9of boolean;
begin
  randomize;
  // Felder der Tabelle löschen
  for spalte:=0 to 8 do begin
    for reihe:=0 to 8 do begin
        feld.Cells[spalte,reihe]:='';
    end;
  end;
  //Belegungen False setzen
  for reihe:=0 to 8 do begin
    for i:=1 to 9 do reihe_feld[reihe,i]:=false;
  end;
  //Felder belegen mit Zahlen
  for spalte:=0 to 8 do begin
    for i:=1 to 9 do spalte_feld[spalte,i]:=false; // belegungen false setzen
    for reihe:=0 to 8 do begin
      zahl:=random(9)+1;  // Zufallszahl erzeugen
      if (spalte_feld[spalte,zahl]=false) and (reihe_feld[reihe,zahl]=false) then
        begin
        feld.Cells[spalte,reihe]:=IntToStr(zahl); // Zahl in die Zelle eintragen
        spalte_feld[spalte,zahl]:=true; // Zahl als belegt ausweisen
        reihe_feld[reihe,zahl]:=true;
        end;
    end;
  end;
end;