diff options
author | Erich Eckner <git@eckner.net> | 2018-09-30 21:29:21 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-09-30 21:29:21 +0200 |
commit | d81c2373be6697e2ebcfd082831115c4f182b6a0 (patch) | |
tree | 87f7c58fa15a5057bccbf2ffd206016236faa491 /buchstabenunit.pas | |
parent | aba523b2d0815b4d900b387044abda19995c0973 (diff) | |
download | Raetsel-d81c2373be6697e2ebcfd082831115c4f182b6a0.tar.xz |
buchstabenunit.pas & hochhausunit.pas neu
Diffstat (limited to 'buchstabenunit.pas')
-rw-r--r-- | buchstabenunit.pas | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/buchstabenunit.pas b/buchstabenunit.pas new file mode 100644 index 0000000..718a70d --- /dev/null +++ b/buchstabenunit.pas @@ -0,0 +1,108 @@ +unit buchstabenunit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, raetselunit, Forms; + +type + tBuchstabenRaetsel = class(tFelderRaetsel) + private + procedure relativeInhaltsAenderung(diff: longint); override; + function absoluteInhaltsAenderung(key: word): boolean; override; + public + constructor create(aOwner: tForm); + destructor destroy; override; + function _loesen(lm: tFelderLoesMeta): longint; override; + end; + +function buchstabenAlphabetFunktion(i: longint): string; + +implementation + +uses + math; + +function buchstabenAlphabetFunktion(i: longint): string; +begin + if i<0 then + result:='' + else if i=0 then + result:='-' + else begin + result:=''; + while i>0 do begin + dec(i); + result:=char(ord('A')+(i mod 26))+result; + i:=i div 26; + end; + end; +end; + +// tBuchstabenRaetsel ********************************************************** + +constructor tBuchstabenRaetsel.create(aOwner: tForm); +begin + inherited create(aOwner,2,@buchstabenAlphabetFunktion); + spinEdits[1].showHint:=true; + spinEdits[1].hint:='Anzahl Buchstaben'; + spinEdits[1].value:=5; + spinEdits[2].showHint:=true; + spinEdits[2].hint:='Anzahl Leerfelder'; + spinEdits[2].value:=1; + aktualisiereGroesze; +end; + +destructor tBuchstabenRaetsel.destroy; +begin + inherited destroy; +end; + +procedure tBuchstabenRaetsel.relativeInhaltsAenderung(diff: longint); +begin + if (cursorPosition<0) or (cursorPosition>=dim*dim) then exit; + inhalt[cursorPosition]:=min(max(-1,inhalt[cursorPosition]+diff),groeszen[0]); +end; + +function tBuchstabenRaetsel.absoluteInhaltsAenderung(key: word): boolean; +begin + result:=true; + if (key>=ord('A')) and (key<=min(ord('A')+groeszen[0]-1,ord('Z'))) then begin + inhalt[cursorPosition]:=key-ord('A')+1; + exit; + end; + if (key=ord(' ')) or (key=46) or (key=8) then begin + inhalt[cursorPosition]:=-1; + exit; + end; + if (key=189) then begin + inhalt[cursorPosition]:=0; + exit; + end; + result:=false; +end; + +function tBuchstabenRaetsel._loesen(lm: tFelderLoesMeta): longint; +begin + if not lm.fwd then begin + result:=1; + exit; + end; + if inhalt[lm.posi]>=0 then begin + result:=_loesen(lm); + exit; + end; + + result:=0; + //for + + if not lm.inhaltBehalten then begin + inhalt[lm.posi]:=-1; + lm.aktualisiereInhalt(lm.posi); + end; +end; + +end. + |