Inhalt

Aktueller Ordner: /

umain.pas

unit UMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Grids, StdCtrls, Unitprimaten;

type
  (* Datentyp fuer die virtuelle Welt*)


  { TfrmMain }

  TfrmMain = class(TForm)
    btnZufall: TButton;
    btnNext: TButton;
    btnStart: TButton;
    btnStopp: TButton;
    Shape1: TShape;
    Shape10: TShape;
    Shape11: TShape;
    Shape12: TShape;
    Shape13: TShape;
    Shape14: TShape;
    Shape15: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    Shape7: TShape;
    Shape8: TShape;
    Shape9: TShape;
    Spielfeld: TDrawGrid;
    pnlBottom: TPanel;
    Kulturmonitor: TStringGrid;
    StaticText1: TStaticText;
    StaticText10: TStaticText;
    StaticText11: TStaticText;
    StaticText12: TStaticText;
    StaticText13: TStaticText;
    StaticText14: TStaticText;
    StaticText15: TStaticText;
    StaticText16: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    StaticText8: TStaticText;
    StaticText9: TStaticText;
    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 KulturmonitorDrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    procedure SpielfeldDrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    procedure StaticText3Click(Sender: TObject);

  private
    { private declarations }

    (* virtuelle Spielwelt *)


  public
    { public declarations }
  end;
PROCEDURE spiel(VAR von,nach :raum);
var
  frmMain: TfrmMain;

implementation

{$R *.lfm}

{ TfrmMain }

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  randomize;
  aufbau;
  FillByte (a,SizeOf(a),0);
  FillByte (b,SizeOf(b),0);
  zufall(a);
  Spielfeld.Repaint;
end;

procedure TfrmMain.KulturmonitorDrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
var i:integer;
begin
  i:= a[aCol+1, aRow+1].kultur;

    case i of
        0: Kulturmonitor.Canvas.Brush.Color := clWhite;
        1: Kulturmonitor.Canvas.Brush.Color := clMaroon;
        2: Kulturmonitor.Canvas.Brush.Color := clGreen;
        3: Kulturmonitor.Canvas.Brush.Color := clOlive;
        4: Kulturmonitor.Canvas.Brush.Color := clNavy;
        5: Kulturmonitor.Canvas.Brush.Color := clPurple;
        6: Kulturmonitor.Canvas.Brush.Color := clTeal;
        7: Kulturmonitor.Canvas.Brush.Color := clRed;
        8: Kulturmonitor.Canvas.Brush.Color := clLime;
        9: Kulturmonitor.Canvas.Brush.Color := clYellow;

     end;


 Kulturmonitor.Canvas.FillRect(aRect);
end;



procedure TfrmMain.SpielfeldDrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
begin
  if a[aCol+1, aRow+1].status = 1 then
   begin
    if a[aCol+1, aRow+1].geschlecht = 2 then
       Spielfeld.Canvas.Brush.Color := clFuchsia
      else
      if a[aCol+1, aRow+1].geschlecht= 1 then
       Spielfeld.Canvas.Brush.Color := clLime

     end
  else
  begin
    if a[aCol+1, aRow+1].status = 2 then
     begin
      if a[aCol+1, aRow+1].geschlecht = 2 then
       Spielfeld.Canvas.Brush.Color := clRed
      else
      if a[aCol+1, aRow+1].geschlecht = 1 then
       Spielfeld.Canvas.Brush.Color := clGreen

    end
    else
     Spielfeld.Canvas.Brush.Color := clWhite
   end;

 Spielfeld.Canvas.FillRect(aRect);

end;

procedure TfrmMain.StaticText3Click(Sender: TObject);
begin

end;







procedure TfrmMain.Auswerten(Sender: TObject);

begin

    spiel(a,b);
    Spielfeld.Refresh;
    Kulturmonitor.Refresh;
    a:= b;
end;

procedure TfrmMain.btnStoppClick(Sender: TObject);
begin
  tmrAnimation.Enabled := false;
  a:=b;
  Spielfeld.Refresh;
  Kulturmonitor.Refresh;
end;

procedure TfrmMain.btnStartClick(Sender: TObject);
begin
  tmrAnimation.Enabled := true;
end;

procedure TfrmMain.btnZufallClick(Sender: TObject);
begin
  zufall(a);
  Spielfeld.Repaint;
  Kulturmonitor.Repaint;
end;

procedure TfrmMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  tmrAnimation.Enabled := false;
  x := xa;
 abbaux(x);
 y := ya;
 abbauy(y);
end;
PROCEDURE spiel(VAR von,nach :raum);
 BEGIN
  y :=ya;
  x :=xa;
  REPEAT
   REPEAT
    nach(.x^.i,y^.i.):=neu(von,x,y);
    frmMain.Kulturmonitor.Cells[x^.i-1,y^.i-1]:=IntToSTR(nach(.x^.i,y^.i.).kultur);
    x := x^.n
   UNTIL x =xa;
   y := y^.n
  UNTIL y =ya;
 END;
end.