cs_fadoro
Messages postés3Date d'inscriptionjeudi 28 avril 2005StatutMembreDernière intervention29 avril 2005
-
29 avril 2005 à 20:06
Niki2001
Messages postés85Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention17 décembre 2005
-
30 avril 2005 à 11:02
J'ai codé deux classes sur deux unités séparées: polygone qui permet de tracer un polygonee sur le paintbox et polyregulier, la m^me chose sauf qu'il est regulier. Je voudrais que la classe polregulier, qui est un polygone particulier, hérite de l'attribut liste:tlist, ainsi que des méthodes affichage e, rotation et translation.
J'ai pensé coder de la manière suivante ,mais c'est plein d'erreurs cela ne compile pas: quelqu'un a-t-il une solution qui ne modifie pas trop le code existant(aussi imparfait soit-il)?
unit polyregulier;
interface
uses graphics,classes,point,math,polygone;
type tpolyregulier=class(tpolygone)
O:tpoint;
r,sommet:integer;
constructor create(O:tpoint;r,sommet:integer);
end;
implementation
constructor tpolyregulier.create(O:tpoint;r,sommet:integer);
var i,x,y:integer;
pt:tpoint;
begin
self.O:=O;
self.r:=r;
self.sommet:=sommet;
inherited(tpolygone.create(l:tlist));
for i:=0 to sommet-1 do
begin
x:=O.abs+trunc(r*cos((i*360/sommet)*(PI/180)));
y:=O.ord+trunc(r*sin((i*360/sommet)*(PI/180)));
pt:=tpoint.create(x,y);
l.Add(pt);
end;
end;
end.
sachant que la classe polygone est codée de la manière suivante:
constructor tpolygone.create(list:tlist);
begin
liste:=tlist.Create;
liste.Assign(list);
end;
procedure tpolygone.affichage(canvas:tcanvas);
var
pta,ptb:tpoint;
i :integer;
begin
pta:=tpoint(liste.Items[0]);
canvas.MoveTo(pta.abs,pta.ord);
for i:=1 to liste.count-1 do
begin
ptb:=tpoint(liste.Items[i]);
canvas.LineTo(ptb.abs,ptb.ord);
end;
canvas.lineTo(pta.abs,pta.ord);
end;
procedure tpolygone.rotation (a : real; pt0:tpoint);
var pta,ptd: tpoint ;
i:integer;
x, y :integer;
begin
for i:=0 to liste.Count-1 do
begin
ptd := tpoint(liste.Items[i]);
x :=trunc ((ptd.abs-pt0.abs)*(cos(degtorad(a)))-(ptd.ord-pt0.ord)*(sin(degtorad(a)))+pt0.abs);
y :=trunc((ptd.abs-pt0.abs)*(sin(degtorad(a)))+(ptd.ord-pt0.ord)*(cos(degtorad(a)))+pt0.ord);
pta := tpoint.create (x,y);
liste.Items[i]:=pta;
end;
end;
procedure tpolygone.translation(x0,y0: integer);
var i:integer;
begin
for i:=0 to liste.count-1 do
begin
TPoint(liste.Items[i]).abs:=TPoint(liste.Items[i]).abs+x0;
TPoint(liste.Items[i]).ord:=TPoint(liste.Items[i]).ord+y0;
end;
end;
end.
Niki2001
Messages postés85Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention17 décembre 20051 30 avril 2005 à 11:02
Ne cherche plus! Même pas besoin de lire 2 lignes pour trouver ton erreur. Tu as oublié de préciser public, private, protected pour les propriétés et les méthodes de ta classe.
Ce ne sont peut-être pas les seules erreurs, mais bon c'est déjà un début.