diff options
Diffstat (limited to 'raetselunit.pas')
-rw-r--r-- | raetselunit.pas | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/raetselunit.pas b/raetselunit.pas index 34bfef6..4ea8d77 100644 --- a/raetselunit.pas +++ b/raetselunit.pas @@ -104,6 +104,7 @@ type function besitzerBreite: longint; override; procedure schreibeZentriert(x,y,i: longint); procedure relativeInhaltsAenderung(diff: longint); dynamic; abstract; + function naechsterWert(pos: longint): boolean; dynamic; abstract; function absoluteInhaltsAenderung(key: word): boolean; dynamic; abstract; procedure gesamtRaenderErzeugen; dynamic; abstract; procedure startFelderFestlegen; override; @@ -612,8 +613,9 @@ end; procedure tFelderRaetsel.leeren; var - p: tLongintArray; - i,w: longint; + p: tLongintArray; + i,w: longint; + funktioniert: boolean; begin p:=permutation(dim*dim); progressBar1.step:=1; @@ -628,7 +630,17 @@ begin continue; w:=inhalt[p[i]]; inhalt[p[i]]:=-1; - if anzLoesungen(-1)<>1 then + funktioniert:=true; + while funktioniert and naechsterWert(p[i]) do begin + if inhalt[p[i]]=w then + continue; + if passt(p[i] mod dim,p[i] div dim) and (anzLoesungen(-1)>0) then + funktioniert:=false; + end; + writeln; + if funktioniert then + inhalt[p[i]]:=-1 + else inhalt[p[i]]:=w; end; @@ -638,8 +650,19 @@ begin application.processMessages; if rand[p[i]]<0 then continue; w:=rand[p[i]]; - rand[p[i]]:=-1; - if anzLoesungen(-1)<>1 then + rand[p[i]]:=0; + funktioniert:=true; + while funktioniert and (rand[p[i]]<dim) do begin + inc(rand[p[i]]); + if rand[p[i]]=w then + continue; + if anzLoesungen(-1)>0 then + funktioniert:=false; + end; + writeln; + if funktioniert then + rand[p[i]]:=-1 + else rand[p[i]]:=w; end; progressBar1.visible:=false; @@ -1058,6 +1081,17 @@ procedure tBuchstabenRaetsel.relativeInhaltsAenderung(diff: integer); {$UNDEF buchstaben} {$UNDEF relativeInhaltsAenderung} +{$DEFINE naechsterWert} +function tHochhausRaetsel.naechsterWert(pos: longint): boolean; +{$DEFINE hochhaus} +{$I raetselunit.inc} +{$UNDEF hochhaus} +function tBuchstabenRaetsel.naechsterWert(pos: longint): boolean; +{$DEFINE buchstaben} +{$I raetselunit.inc} +{$UNDEF buchstaben} +{$UNDEF naechsterWert} + {$DEFINE absoluteInhaltsAenderung} function tHochhausRaetsel.absoluteInhaltsAenderung(key: word): boolean; {$DEFINE hochhaus} |