unit mKugel; interface uses mSuM; type Kugel = class hatStift: Stift; // die Kugel hat einen Stift, um sich zu zeichnen zRadius, zMinH, zMaxH : GanzeZahl; zGeschwindigkeit: Zahl; constructor init(pAnfangH, pAnfangV: GanzeZahl; pGeschwindigkeit: Zahl); procedure Zeichne; procedure Loesche; procedure Bewege; function hPosition: Zahl; // Anfrage mit Ergebnistyp Zahl procedure setzeRichtung(pWinkel: Zahl); // Auftrag mit Parameter destructor gibFrei; end; implementation constructor Kugel.init(pAnfangH, pAnfangV: GanzeZahl; pGeschwindigkeit: Zahl); begin hatStift := Stift.init; // Stift erzeugen hatStift.bewegeBis(pAnfangH, pAnfangV); zRadius:=5; zMinH :=10; zMaxH:=460; zGeschwindigkeit:=pGeschwindigkeit end; procedure Kugel.Zeichne; begin hatStift.zeichneKreis(zRadius); end; procedure Kugel.loesche; begin hatStift.radiere; self.Zeichne; hatStift.normal end; procedure Kugel.Bewege; begin self.loesche; hatStift.bewegeUm(zGeschwindigkeit); if self.hPosition >= (zMaxH-zRadius-1) then // am rechten Rand angekommen (Radius der Kugel berücksichtigen!) self.setzeRichtung(180); // nach links if self.hPosition <= (zMinH+zRadius+1) then // am linken Rand angekommen (Radius der Kugel berücksichtigen!) self.setzeRichtung(0); // nach rechts self.Zeichne; end; function Kugel.hPosition: Zahl; begin result:=hatStift.hPosition end; procedure Kugel.setzeRichtung(pWinkel: Zahl); begin hatStift.dreheBis(pWinkel) end; destructor Kugel.gibFrei; begin hatStift.gibFrei; // Stift wieder freigeben end; end.