is-Logo

Didaktik / Methodik
OOP im Anfangsunterricht

S. Spolwig

[Home | Didaktik]
Startseite
 

Page down

OOP - Erzeugen und Manipulieren von Objekten
 

unit uFenster;
// Aufgabe     : Darstellung eines Meteoriteneinschlages

interface
// ======================================================================
uses
  ...  
  uGrafik, uZeit;		              //  eigene Klassen	

type
  TFensterFrm = class(TForm)
    BildImg     : TImage;
    SteuerPnl   : TPanel;
    StartBtn	: TButton;
    Ende        : TButton;

    procedure FormCreate(Sender: TObject);
    procedure StartBtnClick(Sender: TObject);
    procedure EndeClick(Sender: TObject);
   private
    procedure MeteorInit;
  end;

var
  FensterFrm   : TFensterFrm;
  Zeichenblatt : TZeichenblatt;
  Meteor       : TKreis;                // Objekt deklarieren oder auch mehrere !

implementation
{$R *.DFM}
// ======================================================================

procedure TFensterFrm.FormCreate(Sender: TObject);
// ----------------------------------------------------------------------
begin
  Zeichenblatt := TZeichenblatt.Create;
  Zeichenblatt.SetLink(BildImg);
  Zeichenblatt.SetFuellFarbe(clblue);      // der Himmel
  Zeichenblatt.Zeigen;
  Meteor := TKreis.Create;
end;

procedure TFensterFrm.StartBtnClick(Sender: TObject);
// ----------------------------------------------------------------------
var entfernung : integer;

begin
  MeteorInit;
  entfernung := 0;
  while (Meteor.GetXpos < Zeichenblatt.GetBreite) do
  begin
    Meteor.Zeigen;                                   // in Bewegung setzen
    Zeit.SetPause(10);
    Meteor.Loeschen;
    Meteor.PosVersetzenUm(2,1);
    entfernung := entfernung + 1;

    if (Meteor.GetXpos > 50) and (entfernung < 255)  // beginnt zu glühen
    then
      begin
        Meteor.SetFuellFarbe(RGB(230,entfernung,entfernung));
        Meteor.SetFarbe(RGB(200,100,100));
      end;

    if (Meteor.GetXpos > 350) and (Meteor.GetXpos < 400)
    then
      begin
        Meteor.SetFuellFarbe(clwhite);
        Meteor.SetRadius(Meteor.GetRadius + 10);
      end;  

    if (Meteor.GetXpos > 400)
    then
      begin
        Meteor.SetRadius(2);
        Meteor.PosVersetzenUm(1,3);                     // abstuerzen
      end;
  end;
end;


procedure TFensterFrm.EndeClick(Sender: TObject);
// ----------------------------------------------------------------------
begin
  Close;
end;

procedure TFensterFrm.MeteorInit;
// ----------------------------------------------------------------------
begin
  Meteor.SetPos(-10,30);
  Meteor.SetRadius(5);
  Meteor.SetFarbe(clGray);
  Meteor.SetFuellFarbe(clBlack);
end;

END. // --------- UNIT -----------------
 

Gastvortrag an der TU Dresden  -             02. Nov. 2004     Siegfried Spolwig

Page top