unit mKugel;
interface
uses msum,mTisch;
Type Kugel =
class
private
zradius,zfarbe: GanzeZahl;
zgeschwindigkeit,zrichtung,zx,zy: Zahl;
hstift:buntstift;
ktisch:tisch;
public
constructor init(px, py:zahl ; pradius, pfarbe:ganzezahl;pgeschwindigkeit,prichtung:zahl);
procedure zeigedich;
procedure versteckedich;
procedure bewegedich;
procedure setzerichtung(prichtung : zahl);
procedure merkeTisch(pTisch:tisch);
function gibx : zahl;
function giby : zahl;
function gibrichtung : zahl;
destructor gibFrei;
end;
implementation
constructor Kugel.init(px, py:zahl ; pradius, pfarbe:ganzezahl; pgeschwindigkeit,prichtung:zahl);
begin
hstift := buntstift.init;
zradius := pradius;
zx := px;
zy := py;
zfarbe := pfarbe;
zgeschwindigkeit := pgeschwindigkeit;
zrichtung := prichtung;
hstift.bewegebis(zx,zy);
hstift.dreheUm(zrichtung);
end;
procedure Kugel.zeigeDich;
begin
hstift.setzeFarbe (zfarbe);
hstift.setzefuellmuster(1);
hstift.zeichneKreis(zradius);
end;
procedure Kugel.versteckeDich ;
begin
hstift.setzefarbe(gelb);
hstift.zeichneKreis(zradius);
hstift.setzeFarbe (zfarbe);
end;
procedure Kugel.bewegeDich ;
begin
if self.gibx > ktisch.gibrechts
then self.setzerichtung(180 - self.gibrichtung*2);
if self.gibx < ktisch.giblinks
then self.setzerichtung(180 - self.gibrichtung*2);
if self.giby > ktisch.gibunten
then self.setzerichtung(- self.gibrichtung * 2);
if self.giby < ktisch.giboben
then self.setzerichtung(- self.gibrichtung * 2);
self.versteckedich;
hstift.bewegeum(zgeschwindigkeit);
self.zeigedich;
end;
procedure Kugel.setzerichtung (prichtung : zahl);
begin
hstift.dreheum(prichtung);
end;
procedure kugel.merkeTisch(pTisch:tisch);
begin
kTisch:=pTisch
end ;
function kugel.gibx ;
begin
result := hstift.hposition;
end;
function kugel.giby ;
begin
result := hstift.vposition;
end;
function kugel.gibrichtung ;
begin
result := hstift.winkel;
end;
destructor Kugel.gibFrei;
begin
self.versteckeDich;
hstift.gibFrei;
end;
end.