ich habe mal eine Frage.
Ich habe ein Programm Sudoku (vor Jahren) in Delphi geschrieben,
Jetzt habe ich das nach Lazarus portiert.
Die Routine, wo das Sudoku Spiel aufbaut (mit Zufallszahlen)
habe ich 1 zu 1 von Delphi in Lazarus übernommen.
Nun zu meiner Frage.
Diese Routine läuft in Delphi im Sekundenbereich (zwischen 20 bis 300 Sekuneden).
Die gleiche Routine in Lazarus lauft im Minutenbereich (zwischen 5 bis 30 Miniten).
Hat da jemand eine Idee?
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var h1: integer;
var h2: integer;
var h3: integer;
var h4: integer;
var h5: integer;
var h6: integer;
var h7: integer;
var h8: real;
var h9: real;
var ha: string;
var hb: integer;
var hc: integer;
var hd: integer;
var he: integer;
var hf: integer;
var hg: real;
var hh: integer;
var hi: integer;
var hj: integer;
var hk: integer;
var hl: integer;
var hm: integer;
var hn: integer;
var ho: integer;
var hq: integer;
var hr: integer;
var hs: integer;
var ht: integer;
var q1: integer;
var q2: integer;
var q3: integer;
var lla: integer;
var lla1: integer;
var zahlen: array[1..9] of integer;
var hp: array[1..9, 1..3] of integer;
begin
Label1.Caption:=' '+Chr(169)+'LINSOFT S U D O K U Date: '+FormatDateTime('DD.MM.YYY',now);
if (mtasts = 1) then
begin
h1:=1;
if mspiel = 1 then
begin
h1:=0;
JaNein:=messagedlg('Spiel läuft, neu anfangen ?', mtConfirmation, [mbYes, mbNo], 0);
if (JaNein = mrYes) then
begin
feldfarbe:=0;
mspiel:=0;
for h2:=1 to 81 do
begin
feldnum:=h2;
Farbsfeld;
Farbhfeld;
end;
h1:=1;
Form1.Refresh;
Form1.Repaint;
end;
end;
if h1 = 1 then
begin
lla:=1;
Form1.Cursor:=crHourGlass;
Form1.Refresh;
Timer1.Enabled:=False;
Label2.Caption:='';
Label9.Caption:='';
Label10.Caption:='';
while lla = 1 do
begin
Label2.Caption:='Spiel wird aufgebaut, bitte warten.....';
Label2.Refresh;
lla1:=0;
if afeld > 0 then
begin
Feldaus;
feldnum:=afeld;
feldfarbe:=0;
Farbhfeld;
afeld:=0;
end;
ialpha:='';
inummer:=0;
inumkom:=0;
ikomma:=0;
iart:=1;
izeich:=3;
istell:=0;
mlauf:=0;
mver:=0;
zfarbe:=0;
afeld:=0;
ComboBox1.Enabled:=False;
spielzeit:=StrToTime('00:00:00');
for h1:=1 to 81 do
begin
orgfeld[h1]:=0;
loesung[h1]:=0;
vorgabe[h1]:=0;
for h2:=1 to 10 do
begin
moeglich[h1, h2]:=0;
end;
end;
for h1:=1 to 9 do
begin
for h2:=1 to 9 do
begin
quadrat[h1, h2]:=0;
reihe[h1, h2]:=0;
zeile[h1, h2]:=0;
end;
end;
Bloe;
// Form1.Refresh;
// Form1.Repaint;
Label2.Caption:='Spiel wird aufgebaut, bitte warten.....';
Label2.Refresh;
h5:=0;
h6:=3;
for h1:=1 to 9 do
begin
hc:=0;
h3:=0;
hd:=0;
for h2:=1 to h6 do
begin
if h5 < 27 then
begin
if hc < h6 then
begin
h4:=1;
while h4 = 1 do
begin
if h3 = 0 then
begin
Randomize;
h3:=Random(10);
end;
if h3 > 0 then
begin
if hd = 0 then
begin
Randomize;
hd:=Random(10);
end;
hb:=0;
if hd > 0 then
begin
he:=0;
hf:=0;
hj:=0;
if h1 = 1 then
begin
hf:=0;
hj:=0;
end;
if h1 = 2 then
begin
hf:=1;
hj:=0;
end;
if h1 = 3 then
begin
hf:=2;
hj:=0;
end;
if h1 = 4 then
begin
hf:=0;
hj:=1;
end;
if h1 = 5 then
begin
hf:=1;
hj:=1;
end;
if h1 =6 then
begin
hf:=2;
hj:=1;
end;
if h1 = 7 then
begin
hf:=0;
hj:=2;
end;
if h1 = 8 then
begin
hf:=1;
hj:=2;
end;
if h1 = 9 then
begin
hf:=2;
hj:=2;
end;
if h3 = 1 then
begin
he:=0;
end;
if h3 = 2 then
begin
he:=0;
end;
if h3 = 3 then
begin
he:=0;
end;
if h3 = 4 then
begin
he:=1;
end;
if h3 = 5 then
begin
he:=1;
end;
if h3 =6 then
begin
he:=1;
end;
if h3 = 7 then
begin
he:=2;
end;
if h3 = 8 then
begin
he:=2;
end;
if h3 = 9 then
begin
he:=2;
end;
hi:=h3 - (he * 3);
hb:=(hf * 3) + (he * 9) + hi + (hj * 27);
hh:=0;
Moeglichkeiten;
if hb > 0 then
begin
hh:=moeglich[hb, 1];
end;
if hh > 0 then
begin
hh:=hh + 1;
hi:=1;
for q1:=2 to hh do
begin
if moeglich[hb, q1] = hd then
begin
hi:=0;
end;
if hi = 1 then
begin
if hh > 2 then
begin
hr:=0;
while hr < 2 do
begin
Randomize;
hr:=Random(hh);
end;
end else begin
hr:=hh;
end;
hd:=moeglich[hb, hr];
end;
end;
end;
hi:=0;
if hb > 0 then
begin
ffn:=hb;
Umrechnungff;
hi:=orgfeld[hb];
if hi = 0 then
begin
for hh:=1 to 9 do
begin
if reihe[rr1, hh] = hd then
begin
hi:=1;
end;
end;
if hi = 0 then
begin
for hh:=1 to 9 do
begin
if zeile[ss1, hh] = hd then
begin
hi:=1;
end;
end;
end;
if hi = 0 then
begin
for hh:=1 to 9 do
begin
if quadrat[qq1, hh] = hd then
begin
hi:=1;
end;
end;
end;
if hi = 0 then
begin
if ((h2 = h6) and (h7 = 0)) then
begin
orgfeld[hb]:=hd;
vorgabe[hb]:=hd;
quadrat[qq1, qq2]:=hd;
reihe[rr1, rr2]:=hd;
zeile[ss1, ss2]:=hd;
Moeglichkeiten;
ffn:=hb;
Umrechnungff;
if qq1 = 1 then
begin
q1:=1;
q2:=10;
q3:=19;
end;
if qq1 = 2 then
begin
q1:=4;
q2:=13;
q3:=22;
end;
if qq1 = 3 then
begin
q1:=7;
q2:=16;
q3:=25;
end;
if qq1 = 4 then
begin
q1:=28;
q2:=37;
q3:=46;
end;
if qq1 = 5 then
begin
q1:=31;
q2:=40;
q3:=49;
end;
if qq1 = 6 then
begin
q1:=34;
q2:=43;
q3:=52;
end;
if qq1 = 7 then
begin
q1:=55;
q2:=64;
q3:=73;
end;
if qq1 = 8 then
begin
q1:=58;
q2:=67;
q3:=76;
end;
if qq1 = 9 then
begin
q1:=61;
q2:=70;
q3:=79;
end;
for hk:=1 to 9 do
begin
zahlen[hk]:=0;
end;
hk:=moeglich[q1, 1];
if hk = 1 then
begin
hm:=moeglich[q1, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
q1:=q1 + 1;
hk:=moeglich[q1, 1];
if hk = 1 then
begin
hm:=moeglich[q1, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
q1:=q1 + 1;
hk:=moeglich[q1, 1];
if hk = 1 then
begin
hm:=moeglich[q1, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
hk:=moeglich[q2, 1];
if hk = 1 then
begin
hm:=moeglich[q2, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
q2:=q2 + 1;
hk:=moeglich[q2, 1];
if hk = 1 then
begin
hm:=moeglich[q2, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
q2:=q2 + 1;
hk:=moeglich[q2, 1];
if hk = 1 then
begin
hm:=moeglich[q2, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
hk:=moeglich[q3, 1];
if hk = 1 then
begin
hm:=moeglich[q3, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
q3:=q3 + 1;
hk:=moeglich[q3, 1];
if hk = 1 then
begin
hm:=moeglich[q3, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
q3:=q3 + 1;
hk:=moeglich[q3, 1];
if hk = 1 then
begin
hm:=moeglich[q3, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
for hk:=1 to 9 do
begin
hl:=zahlen[hk];
if hl > 1 then
begin
h4:=0;
lla1:=1;
hd:=0;
h3:=0;
orgfeld[hb]:=0;
vorgabe[hb]:=0;
quadrat[qq1, qq2]:=0;
reihe[rr1, rr2]:=0;
zeile[ss1, ss2]:=0;
end;
end;
end;
if hd > 0 then
begin
orgfeld[hb]:=hd;
vorgabe[hb]:=hd;
loesung[hb]:=hd;
quadrat[qq1, qq2]:=hd;
reihe[rr1, rr2]:=hd;
zeile[ss1, ss2]:=hd;
feldnum:=hb;
feldwert:=hd;
hc:=hc + 1;
h5:=h5 + 1;
h4:=0;
end;
end else begin
hd:=0;
end;
end else begin
h3:=0;
end;
end;
end;
end;
end;
end;
end;
end;
end;
lla:=0;
for h4:= 1 to 9 do
begin
h2:=0;
h3:=0;
Moeglichkeiten;
qq1:=h4;
if qq1 = 1 then
begin
q1:=1;
q2:=10;
q3:=19;
end;
if qq1 = 2 then
begin
q1:=4;
q2:=13;
q3:=22;
end;
if qq1 = 3 then
begin
q1:=7;
q2:=16;
q3:=25;
end;
if qq1 = 4 then
begin
q1:=28;
q2:=37;
q3:=46;
end;
if qq1 = 5 then
begin
q1:=31;
q2:=40;
q3:=49;
end;
if qq1 = 6 then
begin
q1:=34;
q2:=43;
q3:=52;
end;
if qq1 = 7 then
begin
q1:=55;
q2:=64;
q3:=73;
end;
if qq1 = 8 then
begin
q1:=58;
q2:=67;
q3:=76;
end;
if qq1 = 9 then
begin
q1:=61;
q2:=70;
q3:=79;
end;
hn:=0;
for hk:=1 to 9 do
begin
zahlen[hk]:=0;
end;
hk:=moeglich[q1, 1];
if hk = 2 then
begin
hm:=moeglich[q1, 2];
ho:=moeglich[q1, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q1, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
q1:=q1 + 1;
hk:=moeglich[q1, 1];
if hk = 2 then
begin
hm:=moeglich[q1, 2];
ho:=moeglich[q1, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q1, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
q1:=q1 + 1;
hk:=moeglich[q1, 1];
if hk = 2 then
begin
hm:=moeglich[q1, 2];
ho:=moeglich[q1, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q1, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
hk:=moeglich[q2, 1];
if hk = 2 then
begin
hm:=moeglich[q2, 2];
ho:=moeglich[q2, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q2, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
q2:=q2 + 1;
hk:=moeglich[q2, 1];
if hk = 2 then
begin
hm:=moeglich[q2, 2];
ho:=moeglich[q2, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q2, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
q2:=q2 + 1;
hk:=moeglich[q2, 1];
if hk = 2 then
begin
hm:=moeglich[q2, 2];
ho:=moeglich[q2, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q2, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
hk:=moeglich[q3, 1];
if hk = 2 then
begin
hm:=moeglich[q3, 2];
ho:=moeglich[q3, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q3, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
q3:=q3 + 1;
hk:=moeglich[q3, 1];
if hk = 2 then
begin
hm:=moeglich[q3, 2];
ho:=moeglich[q3, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q3, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
q3:=q3 + 1;
hk:=moeglich[q3, 1];
if hk = 2 then
begin
hm:=moeglich[q3, 2];
ho:=moeglich[q3, 3];
if hn = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end else begin
ht:=0;
for hq:=1 to hn do
begin
hr:=hp[hq, 1];
hs:=hp[hq, 2];
if ((hr = hm) and (hs = ho)) then
begin
ht:=1;
hs:=hp[hq, 3];
hs:=hs + 1;
hp[hq, 3]:=hs;
end;
end;
if ht = 0 then
begin
hn:=hn + 1;
hp[hn, 1]:=hm;
hp[hn, 2]:=ho;
hp[hn, 3]:=1;
end;
end;
end;
if hk = 1 then
begin
hm:=moeglich[q3, 2];
hl:=zahlen[hm];
hl:=hl + 1;
zahlen[hm]:=hl;
end;
if hk = 0 then
begin
h2:=q1;
end;
for hk:=1 to 9 do
begin
hl:=zahlen[hk];
if hl > 1 then
begin
h3:=hk;
end;
end;
if hn > 0 then
begin
for hq:=1 to hn do
begin
hr:=hp[hq, 3];
if hr > 2 then
begin
h3:=1;
end;
end;
end;
if h2 > 0 then
begin
lla:=1;
end;
if h3 > 0 then
begin
lla:=1;
end;
end;
if ((lla1 = 0) and (lla = 0)) then
begin
for h4:= 1 to 9 do
begin
for hk:=1 to 9 do
begin
zahlen[hk]:=1;
end;
qq1:=h4;
if qq1 = 1 then
begin
q1:=1;
q2:=10;
q3:=19;
end;
if qq1 = 2 then
begin
q1:=4;
q2:=13;
q3:=22;
end;
if qq1 = 3 then
begin
q1:=7;
q2:=16;
q3:=25;
end;
if qq1 = 4 then
begin
q1:=28;
q2:=37;
q3:=46;
end;
if qq1 = 5 then
begin
q1:=31;
q2:=40;
q3:=49;
end;
if qq1 = 6 then
begin
q1:=34;
q2:=43;
q3:=52;
end;
if qq1 = 7 then
begin
q1:=55;
q2:=64;
q3:=73;
end;
if qq1 = 8 then
begin
q1:=58;
q2:=67;
q3:=76;
end;
if qq1 = 9 then
begin
q1:=61;
q2:=70;
q3:=79;
end;
hk:=moeglich[q1, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q1, hm];
zahlen[hn]:=0;
end;
end;
q1:=q1 + 1;
hk:=moeglich[q1, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q1, hm];
zahlen[hn]:=0;
end;
end;
q1:=q1 + 1;
hk:=moeglich[q1, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q1, hm];
zahlen[hn]:=0;
end;
end;
hk:=moeglich[q2, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q2, hm];
zahlen[hn]:=0;
end;
end;
q2:=q2 + 1;
hk:=moeglich[q2, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q2, hm];
zahlen[hn]:=0;
end;
end;
q2:=q2 + 1;
hk:=moeglich[q2, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q2, hm];
zahlen[hn]:=0;
end;
end;
hk:=moeglich[q3, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q3, hm];
zahlen[hn]:=0;
end;
end;
q3:=q3 + 1;
hk:=moeglich[q3, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q3, hm];
zahlen[hn]:=0;
end;
end;
q3:=q3 + 1;
hk:=moeglich[q3, 1];
if hk > 0 then
begin
ht:=hk + 1;
for hm:=2 to ht do
begin
hn:=moeglich[q3, hm];
zahlen[hn]:=0;
end;
end;
for hk:=1 to 9 do
begin
hn:=zahlen[hk];
if hn = 1 then
begin
lla1:=1;
end;
end;
end;
end;
if ((lla = 0) and (lla1 = 0)) then
begin
loes:=1;
Moeglichkeiten;
for h2:=1 to 81 do
begin
horgfeld[h2]:=orgfeld[h2];
hvorgabe[h2]:=vorgabe[h2];
for h3:=1 to 10 do
begin
hmoeglich[h2, h3]:=moeglich[h2, h3];
end;
ffn:=h2;
Umrechnungff;
hquadrat[qq1, qq2]:=quadrat[qq1, qq2];
hreihe[rr1, rr2]:=reihe[rr1, rr2];
hzeile[ss1, ss2]:=zeile[ss1, ss2];
end;
h4:=1;
while h4 = 1 do
begin
loes:=1;
Moeglichkeiten;
h5:=0;
h7:=0;
for h2:=1 to 81 do
begin
h6:=orgfeld[h2];
h3:=loesung[h2];
if h6 = 0 then
begin
h7:=h7 + 1;
if h3 > 0 then
begin
ffn:=h2;
Umrechnungff;
orgfeld[h2]:=h3;
quadrat[qq1, qq2]:=h3;
reihe[rr1, rr2]:=h3;
zeile[ss1, ss2]:=h3;
h5:=h5 + 1;
end;
end;
end;
if h5 = 0 then
begin
h4:=0;
if h7 > 0 then
begin
lla1:=1;
end else begin
for h2:=1 to 81 do
begin
orgfeld[h2]:=horgfeld[h2];
vorgabe[h2]:=hvorgabe[h2];
for h3:=1 to 10 do
begin
moeglich[h2, h3]:=hmoeglich[h2, h3];
end;
ffn:=h2;
Umrechnungff;
quadrat[qq1, qq2]:=hquadrat[qq1, qq2];
reihe[rr1, rr2]:=hreihe[rr1, rr2];
zeile[ss1, ss2]:=hzeile[ss1, ss2];
end;
if anzvor <> 27 then
begin
if anzvor > 27 then
begin
h6:=anzvor - 27;
h4:=1;
end else begin
h6:=27 - anzvor;
h4:=2;
end;
while h6 > 0 do
begin
Randomize;
h3:=Random(82);
if h3 > 0 then
begin
if h4 = 1 then
begin
h5:=orgfeld[h3];
if h5 = 0 then
begin
h5:=loesung[h3];
orgfeld[h3]:=h5;
vorgabe[h3]:=h5;
ffn:=h3;
Umrechnungff;
quadrat[qq1, qq2]:=h5;
reihe[rr1, rr2]:=h5;
zeile[ss1, ss2]:=h5;
h6:=h6 - 1;
end;
end else begin
h5:=orgfeld[h3];
if h5 > 0 then
begin
h5:=0;
orgfeld[h3]:=h5;
vorgabe[h3]:=h5;
ffn:=h3;
Umrechnungff;
quadrat[qq1, qq2]:=h5;
reihe[rr1, rr2]:=h5;
zeile[ss1, ss2]:=h5;
h6:=h6 - 1;
end;
end;
end;
end;
h4:=0;
Moeglichkeiten;
end;
end;
end;
end;
end;
if ((lla = 0) and (lla1 = 1)) then
begin
lla:=1;
end;
end;
Label2.Caption:='';
Label2.Refresh;
for h1:=1 to 81 do
begin
h2:=orgfeld[h1];
if h2 > 0 then
begin
feldnum:=h1;
feldfarbe:=1;
Farbsfeld;
feldwert:=h2;
Anzfeld;
end;
end;
Moeglichkeiten;
mspiel:=1;
Timer1.Enabled:=True;
Form1.Cursor:=crDefault;
// Form1.Refresh;
end;
Form1.Refresh;
Form1.Repaint;
end;
end;
Jürgen