[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 ----------------- |