|
[Home
| Didaktik] |
|
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 -----------------
|