diff options
author | Erich Eckner <git@eckner.net> | 2018-10-01 16:27:46 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-10-01 16:27:46 +0200 |
commit | be4dbd37f218d219232c3a75ec772b940ad506e0 (patch) | |
tree | 8609c9eff842593c5a75a197292d0c53a3a01f43 /raetselunit.pas | |
parent | ab7b912fe2e31fdbb0978979df8606724c387d10 (diff) | |
download | Raetsel-be4dbd37f218d219232c3a75ec772b940ad506e0.tar.xz |
sollte funktionieren - modulo gui-Macken
Diffstat (limited to 'raetselunit.pas')
-rw-r--r-- | raetselunit.pas | 36 |
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} |