unit mKreis; interface uses mSuM; type Kreis = class // Objektnamen hatStift: Buntstift; // Zustandsvariablen für die Attribute zGroesse: Zahl; constructor init(pHPosition, pVPosition, pGroesse: Zahl); procedure zeichne; procedure loesche; procedure setzeFarbe(pFarbe: GanzeZahl); procedure bewegeBis(pHPosition, pVPosition: Zahl); procedure bewegeUm(pHDistanz, pVDistanz: Zahl); function hPosition: Zahl; function vPosition: Zahl; procedure setzeGroesse(pGroesse: Zahl); function groesse: Zahl; function getroffen(pHPosition, pVPosition: Zahl): Wahrheitswert; procedure aktiviere; procedure deaktiviere; destructor gibFrei; end; implementation constructor Kreis.init(pHPosition, pVPosition, pGroesse: Zahl); begin hatStift := Buntstift.init; zGroesse:=pGroesse; hatstift.bewegeBis(pHPosition,pVPosition); self.zeichne end; procedure Kreis.zeichne; begin hatStift.zeichneKreis(zGroesse) end; procedure Kreis.loesche; begin hatStift.radiere; self.zeichne; hatStift.normal end; procedure Kreis.setzeFarbe(pFarbe: GanzeZahl); begin self.loesche; hatStift.setzeFarbe(pFarbe); self.zeichne end; procedure Kreis.bewegeBis(pHPosition, pVPosition: Zahl); begin self.loesche; hatStift.bewegeBis(pHPosition,pVPosition); self.zeichne end; procedure Kreis.bewegeUm(pHDistanz, pVDistanz: Zahl); begin self.bewegeBis(self.hPosition+pHDistanz, self.vPosition+pVDistanz) end; function Kreis.hPosition: Zahl; begin result := hatStift.hPosition end; function Kreis.vPosition: Zahl; begin result := hatStift.vPosition end; procedure Kreis.setzeGroesse(pGroesse: Zahl); begin self.loesche; zGroesse := pGroesse; self.zeichne end; function Kreis.groesse: Zahl; begin result := zGroesse end; function Kreis.getroffen(pHPosition, pVPosition: Zahl): Wahrheitswert; begin result := (pHPosition-self.hPosition)*(pHPosition-self.hPosition)+ (pVPosition-self.vPosition)*(pVPosition-self.vPosition) < zGroesse*zGroesse end; procedure Kreis.aktiviere; begin self.loesche; hatStift.setzeLinienbreite(3); self.zeichne end; procedure Kreis.deaktiviere; begin self.loesche; hatStift.setzeLinienbreite(1); self.zeichne end; destructor Kreis.gibFrei; begin self.loesche; hatStift.gibFrei end; end.