summaryrefslogtreecommitdiff
path: root/raetselunit.inc
diff options
context:
space:
mode:
Diffstat (limited to 'raetselunit.inc')
-rw-r--r--raetselunit.inc67
1 files changed, 28 insertions, 39 deletions
diff --git a/raetselunit.inc b/raetselunit.inc
index 90315bf..025d68a 100644
--- a/raetselunit.inc
+++ b/raetselunit.inc
@@ -89,50 +89,39 @@ end;
{$IFDEF passt}
// function tHochhausRaetsel.passt(spalte,zeile: integer): boolean;
var
- i,KZ,KS: integer;
- w,s,k: longint;
+ i: integer;
+ w,s,k: longint;
+ kachel: longint;
begin
w:=0;
s:=0;
k:=0;
- if sudokuCB.checked then begin
- KZ:=(zeile div nSqrt)*nSqrt;
- KS:=(spalte div nSqrt)*nSqrt;
- for i:=0 to dim-1 do begin
- {$IFDEF buchstaben}
- w:=w*(groeszen[0]+2)+inhalt[zeile*dim+i]+1;
- s:=s*(groeszen[0]+2)+inhalt[i*dim+spalte]+1;
- k:=k*(groeszen[0]+2)+inhalt[(KZ+(i div nSqrt))*dim+KS+(i mod nSqrt)]+1;
- {$ENDIF}
- {$IFDEF hochhaus}
- w:=w*(dim+1)+max(0,inhalt[zeile*dim+i]);
- s:=s*(dim+1)+max(0,inhalt[i*dim+spalte]);
- k:=k*(dim+1)+max(0,inhalt[(KZ+(i div nSqrt))*dim+KS+(i mod nSqrt)]);
- {$ENDIF}
- end;
- result:=
- AMoeglich[k*(groeszen[0]+1)] and
- EMoeglich[s*(groeszen[0]+1)+max(0,rand[spalte])] and
- AMoeglich[w*(groeszen[0]+1)+max(0,rand[dim+zeile])] and
- AMoeglich[s*(groeszen[0]+1)+max(0,rand[2*dim+spalte])] and
- EMoeglich[w*(groeszen[0]+1)+max(0,rand[3*dim+zeile])];
- end
- else begin
+ for i:=0 to dim-1 do begin
+ {$IFDEF buchstaben}
+ w:=w*(groeszen[0]+2)+inhalt[zeile*dim+i]+1;
+ s:=s*(groeszen[0]+2)+inhalt[i*dim+spalte]+1;
+ {$ENDIF}
+ {$IFDEF hochhaus}
+ w:=w*(dim+1)+max(0,inhalt[zeile*dim+i]);
+ s:=s*(dim+1)+max(0,inhalt[i*dim+spalte]);
+ {$ENDIF}
+ end;
+ result:=
+ EMoeglich[s*(groeszen[0]+1)+max(0,rand[spalte])] and
+ AMoeglich[w*(groeszen[0]+1)+max(0,rand[dim+zeile])] and
+ AMoeglich[s*(groeszen[0]+1)+max(0,rand[2*dim+spalte])] and
+ EMoeglich[w*(groeszen[0]+1)+max(0,rand[3*dim+zeile])];
+ if puzzleTeile[0][0]>=0 then begin
+ kachel:=invPuzzleTeile[zeile*dim+spalte]['x'];
for i:=0 to dim-1 do begin
{$IFDEF buchstaben}
- w:=w*(groeszen[0]+2)+inhalt[zeile*dim+i]+1;
- s:=s*(groeszen[0]+2)+inhalt[i*dim+spalte]+1;
+ k:=k*(groeszen[0]+2)+inhalt[puzzleTeile[kachel][i]]+1;
{$ENDIF}
{$IFDEF hochhaus}
- w:=w*(dim+1)+max(0,inhalt[zeile*dim+i]);
- s:=s*(dim+1)+max(0,inhalt[i*dim+spalte]);
+ k:=k*(dim+1)+max(0,inhalt[puzzleTeile[kachel][i]]);
{$ENDIF}
end;
- result:=
- EMoeglich[s*(groeszen[0]+1)+max(0,rand[spalte])] and
- AMoeglich[w*(groeszen[0]+1)+max(0,rand[dim+zeile])] and
- AMoeglich[s*(groeszen[0]+1)+max(0,rand[2*dim+spalte])] and
- EMoeglich[w*(groeszen[0]+1)+max(0,rand[3*dim+zeile])];
+ result:=result and AMoeglich[k*(groeszen[0]+1)];
end;
if diagonalenCB.checked then begin
if zeile=spalte then begin
@@ -411,8 +400,9 @@ end;
{$IFDEF passtZumZeichnen}
// function tHochhausRaetsel.passtZumZeichnen(spalte,zeile: integer): boolean;
var
- i,KS,KZ: integer;
- w,s: longint;
+ i: integer;
+ w,s: longint;
+ kachel: longint;
begin
result:=false;
if (spalte>=0) and (zeile>=0) and (spalte<dim) and (zeile<dim) then begin // im inneren
@@ -464,11 +454,10 @@ begin
end;
end;
if sudokuCB.checked then begin
- KZ:=(zeile div nSqrt)*nSqrt;
- KS:=(spalte div nSqrt)*nSqrt;
+ kachel:=invPuzzleTeile[zeile*dim+spalte]['x'];
s:=w+1;
for i:=0 to dim-1 do
- if inhalt[(KZ+(i div nSqrt))*dim+KS+(i mod nSqrt)]=inhalt[zeile*dim+spalte] then
+ if inhalt[puzzleTeile[kachel][i]]=inhalt[zeile*dim+spalte] then
dec(s);
result:=result and (s>0);
end;