Inhalt
Aktueller Ordner:
/umain.pas
unit UMain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Grids, StdCtrls, Unitgenalgess;
type
(* Datentyp fuer die virtuelle Welt*)
{ TfrmMain }
TfrmMain = class(TForm)
btnNext: TButton;
btnStart: TButton;
btnStopp: TButton;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Spielfeld: TDrawGrid;
pnlBottom: TPanel;
StaticText1: TStaticText;
StaticText10: TStaticText;
StaticText11: TStaticText;
StaticText12: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
StaticText7: TStaticText;
StaticText8: TStaticText;
StaticText9: TStaticText;
StatusMonitor: TStringGrid;
tmrAnimation: TTimer;
procedure Auswerten(Sender: TObject);
procedure btnStoppClick(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure btnZufallClick(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure SpielfeldDrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
private
{ private declarations }
(* virtuelle Spielwelt *)
public
{ public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.lfm}
{ TfrmMain }
procedure TfrmMain.FormCreate(Sender: TObject);
begin
aufbau;
aufbaugene;
aufbauweider;
aufbaunahrung;
aufbaurauber;
aufbauzelle;
randomize;
zufall(bilda);
end;
procedure TfrmMain.SpielfeldDrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
begin
if TypeOf(bilda[aCol+1, aRow+1]^) = TypeOf(rauber) then
Spielfeld.Canvas.Brush.Color := clRed
else
if TypeOf(bilda[aCol+1, aRow+1]^) = TypeOF(weider) then
Spielfeld.Canvas.Brush.Color := clGreen
else
if TypeOf(bilda[aCol+1, aRow+1]^) = TYPEOF(nahrung) then
Spielfeld.Canvas.Brush.Color := clYellow
else
Spielfeld.Canvas.Brush.Color := clWhite;
Spielfeld.Canvas.FillRect(aRect);
end;
procedure TfrmMain.Auswerten(Sender: TObject);
var z,aRow:integer;
begin
zufall(bilda);
Z := 0;
REPEAT
spiel(bilda,bildb);
Spielfeld.Refresh;
bilda:= bildb;
z := z + 1;
aRow:= 1;
Aweider := Wweider;
with StatusMonitor do
repeat
Cells[0, aRow] := Aweider^.gen^.g;
Cells[2, aRow] := IntToStr(Aweider^.fit);
aRow:=aRow+1;
Aweider := Aweider^.nach;
until aRow = rowCount;
StatusMonitor.Refresh;
Until (z = 10);
crossing_over;
end;
procedure TfrmMain.btnStoppClick(Sender: TObject);
begin
tmrAnimation.Enabled := false;
bilda:=bildb;
Spielfeld.Refresh;
end;
procedure TfrmMain.btnStartClick(Sender: TObject);
begin
tmrAnimation.Enabled := true;
end;
procedure TfrmMain.btnZufallClick(Sender: TObject);
begin
abbaux(x);
Agen := Wgen;
abbaugene(Agen);
Aweider := Wweider;
abbauweider(Aweider);
abbaunahrung;
abbaurauber;
abbauzelle;
y:=ya;
abbauy(y);
aufbau;
aufbaugene;
aufbauweider;
aufbaunahrung;
aufbaurauber;
aufbauzelle;
zufall(bilda);
Spielfeld.Repaint;
end;
procedure TfrmMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
tmrAnimation.Enabled := false;
x := xa;
abbaux(x);
Agen := Wgen;
abbaugene(Agen);
Aweider := Wweider;
abbauweider(Aweider);
abbaunahrung;
abbaurauber;
abbauzelle;
y:=ya;
abbauy(y);
end;
end.