summaryrefslogtreecommitdiff
path: root/raetselunit.pas
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-10-01 16:27:46 +0200
committerErich Eckner <git@eckner.net>2018-10-01 16:27:46 +0200
commitbe4dbd37f218d219232c3a75ec772b940ad506e0 (patch)
tree8609c9eff842593c5a75a197292d0c53a3a01f43 /raetselunit.pas
parentab7b912fe2e31fdbb0978979df8606724c387d10 (diff)
downloadRaetsel-be4dbd37f218d219232c3a75ec772b940ad506e0.tar.xz
sollte funktionieren - modulo gui-Macken
Diffstat (limited to 'raetselunit.pas')
-rw-r--r--raetselunit.pas36
1 files changed, 29 insertions, 7 deletions
diff --git a/raetselunit.pas b/raetselunit.pas
index 19306a8..e5a8cee 100644
--- a/raetselunit.pas
+++ b/raetselunit.pas
@@ -46,6 +46,7 @@ type
function passt(spalte,zeile: integer): boolean; dynamic; abstract;
function geloest: boolean; dynamic; abstract;
procedure randErzeugen; dynamic; abstract;
+ procedure startfelderFestlegen; dynamic; abstract;
public
constructor create(aOwner: tForm);
destructor destroy; override;
@@ -62,6 +63,8 @@ type
cursorPosition: longint;
zellGroesze: extended;
uebersetze: tAlphabetFunktion;
+ FeldFarben: array of tColor;
+ startfeld: array of boolean;
procedure anzSEsOnChange(sender: tObject);
procedure onKeyDown(sender: tObject; var key: word; shiftState: tShiftState); override;
procedure onMouseDown(sender: tObject; button: tMouseButton; shiftState: tShiftState; x,y: longint); override;
@@ -75,6 +78,7 @@ type
procedure relativeInhaltsAenderung(diff: longint); dynamic; abstract;
function absoluteInhaltsAenderung(key: word): boolean; dynamic; abstract;
procedure gesamtRaenderErzeugen; dynamic; abstract;
+ procedure startfelderfestlegen; override;
public
constructor create(aOwner: tForm; anzInhTypen: longint; alphabetFunktion: tAlphabetFunktion);
destructor destroy; override;
@@ -265,12 +269,14 @@ begin
end;
procedure tRaetsel.erzeugeOnClick(sender: tObject);
+var
+ i: longint;
begin
loeschen;
loesen(-1);
randErzeugen;
leeren;
- // TODO: Startfelder setzen
+ startFelderFestlegen;
zeichnen;
end;
@@ -411,6 +417,8 @@ begin
dim:=dim+groeszen[i];
end;
setlength(inhalt,dim*dim);
+ setlength(startfeld,dim*dim);
+ setlength(feldFarben,dim*dim);
setlength(rand,4*dim);
NSqrt:=round(sqrt(dim));
@@ -428,8 +436,11 @@ procedure tFelderRaetsel.loeschen;
var
i: longint;
begin
- for i:=0 to length(inhalt)-1 do
+ for i:=0 to length(inhalt)-1 do begin
inhalt[i]:=-1;
+ startFeld[i]:=true;
+ feldFarben[i]:=$000000;
+ end;
for i:=0 to length(rand)-1 do
rand[i]:=-1;
end;
@@ -519,16 +530,19 @@ var
begin
s:=uebersetze(i);
with zeichenflaeche.canvas do begin
- brush.color:=$FFFFFF - $181818*byte(diagonalenCB.checked and ((x=y) or (x+y=dim+1)));
+ brush.color:=$FFFFFF;
+ if (x>=0) and (y>=0) and (x<dim) and (y<dim) and (diagonalenCB.checked and ((x=y) or (x+y=dim+1))) then
+ brush.color:=brush.color - $181818;
if not passtZumZeichnen(x,y) then
font.color:=$0000FF
else if geloest then
font.color:=$007F00
-// else if startFeld[x+y*dim] then
-// font.color:=$7F7F7F
+ else if (x<0) or (y<0) or (x>=dim) or (y>=dim) then
+ font.color:=$000000
+ else if startFeld[x+y*dim] then
+ font.color:=$7F7F7F
else
- font.color:=$000000;
- // feldFarben[x+y*dim];
+ font.color:=feldFarben[x+y*dim];
br:=textWidth(s);
ho:=textHeight(s);
@@ -598,6 +612,14 @@ begin
schreibeZentriert(i mod dim,i div dim,inhalt[i]);
end;
+procedure tFelderRaetsel.startfelderfestlegen;
+var
+ i: longint;
+begin
+ for i:=0 to length(inhalt)-1 do
+ startfeld[i]:=inhalt[i]>=0;
+end;
+
{$DEFINE create}
constructor tHochhausRaetsel.create(aOwner: tForm);
{$DEFINE hochhaus}