diff options
author | Erich Eckner <git@eckner.net> | 2018-10-01 20:55:17 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-10-01 20:55:17 +0200 |
commit | abf4bca5cdbce43df9813dacbb019b5a84500d3d (patch) | |
tree | 2ec277d3cef31cab1a45a3d94cee8aa8919fe160 /raetselunit.pas | |
parent | 73c655065d36eb03f79f7e9b05754cbd498f7ae8 (diff) | |
download | Raetsel-abf4bca5cdbce43df9813dacbb019b5a84500d3d.tar.xz |
Rückgängig gangbar
Diffstat (limited to 'raetselunit.pas')
-rw-r--r-- | raetselunit.pas | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/raetselunit.pas b/raetselunit.pas index 4615ddd..c43d0f0 100644 --- a/raetselunit.pas +++ b/raetselunit.pas @@ -4,7 +4,9 @@ unit raetselunit; interface -// TODO: Rückgängig +// TODO: Speichern/Laden + +// TODO: Spielnummernzufall // TODO: Cross-Compilieren @@ -24,6 +26,14 @@ type function width: longint; end; + tZug = record + Position: integer; + Vorher: integer; + vorherFarbe, + nachherFarbe, + vorherMalFarbe: TColor; + end; + tRaetsel = class private besitzer: tForm; @@ -69,6 +79,7 @@ type uebersetze: tAlphabetFunktion; FeldFarben: array of tColor; startfeld: array of boolean; + zuege: array of tZug; 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; @@ -83,6 +94,7 @@ type function absoluteInhaltsAenderung(key: word): boolean; dynamic; abstract; procedure gesamtRaenderErzeugen; dynamic; abstract; procedure startfelderfestlegen; override; + procedure alsZugSpeichern; public constructor create(aOwner: tForm; anzInhTypen: longint; alphabetFunktion: tAlphabetFunktion); destructor destroy; override; @@ -273,8 +285,6 @@ begin end; procedure tRaetsel.erzeugeOnClick(sender: tObject); -var - i: longint; begin loeschen; loesen(-1); @@ -370,6 +380,19 @@ end; procedure tFelderRaetsel.onKeyDown(sender: tObject; var key: word; shiftState: tShiftState); begin + if ssCtrl in shiftState then begin + if (Key=ord('Z')) and (length(Zuege)>0) then begin + cursorPosition:=Zuege[length(Zuege)-1].Position; + inhalt[cursorPosition]:=Zuege[length(Zuege)-1].Vorher; + FeldFarben[cursorPosition]:=Zuege[length(Zuege)-1].VorherFarbe; + aktuelleFarbe:=Zuege[length(Zuege)-1].VorherMalFarbe; + setlength(Zuege,length(Zuege)-1); + farbWahlFlaecheBemalen; + end; + Zeichnen; + exit; + end; + if not absoluteInhaltsAenderung(key) then case key of VK_DOWN: @@ -440,6 +463,8 @@ procedure tFelderRaetsel.loeschen; var i: longint; begin + aktuelleFarbe:=$000000; + setlength(zuege,0); for i:=0 to length(inhalt)-1 do begin inhalt[i]:=-1; startFeld[i]:=true; @@ -447,6 +472,7 @@ begin end; for i:=0 to length(rand)-1 do rand[i]:=-1; + farbWahlFlaecheBemalen; end; procedure tFelderRaetsel.leeren; @@ -624,6 +650,19 @@ begin startfeld[i]:=inhalt[i]>=0; end; +procedure tFelderRaetsel.alsZugSpeichern; +begin + setLength(zuege,length(zuege)+1); + zuege[length(zuege)-1].position:=cursorPosition; + zuege[length(zuege)-1].vorher:=inhalt[cursorPosition]; + zuege[length(zuege)-1].vorherFarbe:=feldFarben[cursorPosition]; + zuege[length(zuege)-1].nachherFarbe:=aktuelleFarbe; + if length(zuege)=1 then + zuege[length(zuege)-1].vorherMalFarbe:=$000000 + else + zuege[length(zuege)-1].vorherMalFarbe:=zuege[length(zuege)-2].nachherFarbe; +end; + {$DEFINE create} constructor tHochhausRaetsel.create(aOwner: tForm); {$DEFINE hochhaus} |