summaryrefslogtreecommitdiff
path: root/unit1.pas
diff options
context:
space:
mode:
Diffstat (limited to 'unit1.pas')
-rw-r--r--unit1.pas179
1 files changed, 179 insertions, 0 deletions
diff --git a/unit1.pas b/unit1.pas
new file mode 100644
index 0000000..c4fa179
--- /dev/null
+++ b/unit1.pas
@@ -0,0 +1,179 @@
+unit Unit1;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
+ Spin, ComCtrls, ExtCtrls, SlitherlinkUnit;
+
+type
+
+ { TForm1 }
+
+ TForm1 = class(TForm)
+ Button1: TButton;
+ Button2: TButton;
+ Button3: TButton;
+ Button4: TButton;
+ Button5: TButton;
+ CheckBox1: TCheckBox;
+ OpenDialog1: TOpenDialog;
+ ProgressBar1: TProgressBar;
+ SaveDialog1: TSaveDialog;
+ SpinEdit1: TSpinEdit;
+ SpinEdit2: TSpinEdit;
+ SpinEdit3: TSpinEdit;
+ Timer1: TTimer;
+ procedure Button1Click(Sender: TObject);
+ procedure Button2Click(Sender: TObject);
+ procedure Button3Click(Sender: TObject);
+ procedure Button4Click(Sender: TObject);
+ procedure Button5Click(Sender: TObject);
+ procedure CheckBox1Change(Sender: TObject);
+ procedure FormActivate(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormDestroy(Sender: TObject);
+ procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+ procedure FormResize(Sender: TObject);
+ procedure SpinEdit1Change(Sender: TObject);
+ procedure SpinEdit2Change(Sender: TObject);
+ procedure SpinEdit3Change(Sender: TObject);
+ procedure Timer1Timer(Sender: TObject);
+ private
+ { private declarations }
+ public
+ { public declarations }
+ Feld: TFeld;
+ GenThread: TGenerierungsThread;
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{$R *.lfm}
+
+{ TForm1 }
+
+procedure TForm1.FormCreate(Sender: TObject);
+begin
+ Feld:=TFeld.Create(Form1);
+ Feld.Lerndatei:=Extractfilepath(Application.Exename)+'gelerntes.dat';
+ Feld.Oben:=32;
+ Form1.OnKeyPress:=@(Feld.OnKeyPress);
+ SpinEdit1.OnKeyPress:=@(Feld.OnKeyPress);
+ SpinEdit2.OnKeyPress:=@(Feld.OnKeyPress);
+ SpinEdit3.OnKeyPress:=@(Feld.OnKeyPress);
+ Button1.OnKeyPress:=@(Feld.OnKeyPress);
+ Button2.OnKeyPress:=@(Feld.OnKeyPress);
+ Button3.OnKeyPress:=@(Feld.OnKeyPress);
+ Button4.OnKeyPress:=@(Feld.OnKeyPress);
+ Button5.OnKeyPress:=@(Feld.OnKeyPress);
+end;
+
+procedure TForm1.Button1Click(Sender: TObject);
+begin
+ if Button1.Caption = 'erzeugen' then Feld.Erzeugen(Progressbar1)
+ else Feld.LoadFromFeld(GenThread.Feld);
+ Feld.Zeichnen;
+ if Assigned(GenThread) then GenThread.destroy;
+ GenThread:=TGenerierungsThread.create(Spinedit1.Value,Spinedit2.Value,Progressbar1,nil,Checkbox1.Checked);
+ Button1.Caption:='noch eins';
+ Button1.Enabled:=false;
+end;
+
+procedure TForm1.Button2Click(Sender: TObject);
+begin
+ Feld.RueckGaengig;
+ Feld.Zeichnen;
+end;
+
+procedure TForm1.Button3Click(Sender: TObject);
+begin
+ if OpenDialog1.Execute then
+ if Feld.LoadFromFile(OpenDialog1.FileName) then Feld.Zeichnen
+ else MessageDlg('Ungültiges Dateiformat!',mterror,[mbOk],0);
+end;
+
+procedure TForm1.Button4Click(Sender: TObject);
+begin
+ if SaveDialog1.Execute then
+ Feld.SaveToFile(SaveDialog1.FileName);
+end;
+
+procedure TForm1.Button5Click(Sender: TObject);
+begin
+ Feld.Erzeugen(Progressbar1,true);
+end;
+
+procedure TForm1.CheckBox1Change(Sender: TObject);
+begin
+ Feld.Schleife:=Checkbox1.Checked;
+ Feld.Zeichnen;
+end;
+
+procedure TForm1.FormActivate(Sender: TObject);
+var I: Integer;
+begin
+ For I:=0 to Form1.ComponentCount-1 do begin
+ if Form1.Components[I] is TButton then
+ (Form1.Components[I] as TButton).OnKeyDown:=Form1.OnKeyDown;
+ if Form1.Components[I] is TSpinEdit then
+ (Form1.Components[I] as TSpinEdit).OnKeyDown:=Form1.OnKeyDown;
+ end;
+end;
+
+procedure TForm1.FormDestroy(Sender: TObject);
+begin
+ Feld.Destroy;
+ if assigned(GenThread) then GenThread.destroy;
+end;
+
+procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
+ );
+var C: Char;
+begin
+ if Key in [ord('c'),ord('x'),ord('y')] then
+ begin
+ C:=char(Key);
+ Feld.OnKeyPress(Sender,C);
+ Key:=0;
+ end;
+end;
+
+procedure TForm1.FormResize(Sender: TObject);
+begin
+ Progressbar1.Width:=Form1.ClientWidth-Progressbar1.Left;
+end;
+
+procedure TForm1.SpinEdit1Change(Sender: TObject);
+begin
+ Feld.Breite:=SpinEdit1.Value;
+ Feld.Zeichnen;
+end;
+
+procedure TForm1.SpinEdit2Change(Sender: TObject);
+begin
+ Feld.Hoehe:=SpinEdit2.Value;
+ Feld.Zeichnen;
+end;
+
+procedure TForm1.SpinEdit3Change(Sender: TObject);
+begin
+ Feld.Optionen.Schriftgroesse:=Spinedit3.Value;
+ Feld.Zeichnen;
+end;
+
+procedure TForm1.Timer1Timer(Sender: TObject);
+begin
+ if Assigned(GenThread) and (GenThread.Fertig=1) then begin
+ GenThread.Fertig:=2;
+ Button1.Enabled:=true;
+ end;
+end;
+
+end.
+