f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 15 oct. 2006 à 17:43
ah aussi, tu n'etais pas vraiment obligé de separé l'animation de la balle dans une unité a part.
a moins que tu crée un objet Balle qui peut etre utilisé dans n'importe quel canvas.
ce qui serait deja plus interressant d'un point de vue technique.
Dam_neo
Messages postés5Date d'inscriptionjeudi 2 juin 2005StatutMembreDernière intervention16 octobre 2006 14 oct. 2006 à 12:03
Merci beaucoup F0XI pour tout ces conseils d'optimisation. Ca m'a appris pleins de choses. :)
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 14 oct. 2006 à 08:36
ou voir encore l'outil DEPOC qui est specialisé dans le nettoyage des projets Delphi.
sinon passont au choses serieuse :
TCoord est un plagia tu type TPoint ... donc inutile de reinventer ce qui existe :
TPoint = record X,Y : integer end;
qui vas avec la fontion Point(X,Y : integer) : TPoint
ensuite, un truc que tu vas trouver pratique : With ... Do
qui permet d'eviter cela :
form1.Image1.Canvas.Pen.Color:=clblue;
form1.Image1.Canvas.Brush.Color:=clblue;
form1.Image1.Canvas.Ellipse(balle.coo_haut.x,balle.coo_haut.y,balle.coo_bas.x,balle.coo_bas.y);
en le transformant en cela :
with form1.Image1.Canvas do begin
Pen.Color:=clblue;
Brush.Color:=clblue;
Ellipse(balle.coo_haut.x,balle.coo_haut.y,balle.coo_bas.x,balle.coo_bas.y);
end;
encore un autre truc que tu vas apprecier :
TPaintBox au lieu de TImage. Timage est plus lourd que TPaintBox est n'est pas initialement prevus pour l'animation.
un inverseur booleen, qui reduit considerablement cette procedure :
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key = vk_space then begin
Timer1.Enabled := not Timer1.Enabled;
end;
et pour finir on augmente les performances :
const
RTD : extended = 180/Pi;
procedure deplacer_balle(var balle : Tballe);
var DDG : extended;
PST,PCT : integer;
begin
with form1.Image1.Canvas do begin
Brush.Color := clWhite;
FillRect(Image1.ClientRect);
end;
with Balle do begin
DDG := direction * RTD;
PST := round( Vitesse * cos(DDG) );
PCT := round( Vitesse * sin(DDG) );
coo_haut := point( coo_haut.x+PCT, coo_haut.y+PST);
coo_bas := point( coo_bas.x+PCT, coo_bas.y+PST);
end;
controler_sortie(balle);
end;
Dam_neo
Messages postés5Date d'inscriptionjeudi 2 juin 2005StatutMembreDernière intervention16 octobre 2006 13 oct. 2006 à 21:02
C'était mon premier projet que je postais ici. Dites moi svp quels sont les fichiers à mettre dans mon zip afin que je ne gaffe plus ;) Merci d'avance.
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 13 oct. 2006 à 14:44
Les Fichiers *.* ne sont pas utiles dans le zip.
fbalien
Messages postés251Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention11 novembre 2016 13 oct. 2006 à 09:48
Les Fichiers bak et les unités compilées ne sont utiles dans le zip (*.~PAS;*.DCU;*.~DPR)
15 oct. 2006 à 17:43
a moins que tu crée un objet Balle qui peut etre utilisé dans n'importe quel canvas.
ce qui serait deja plus interressant d'un point de vue technique.
14 oct. 2006 à 12:03
14 oct. 2006 à 08:36
sinon passont au choses serieuse :
TCoord est un plagia tu type TPoint ... donc inutile de reinventer ce qui existe :
TPoint = record X,Y : integer end;
qui vas avec la fontion Point(X,Y : integer) : TPoint
ensuite, un truc que tu vas trouver pratique : With ... Do
qui permet d'eviter cela :
form1.Image1.Canvas.Pen.Color:=clblue;
form1.Image1.Canvas.Brush.Color:=clblue;
form1.Image1.Canvas.Ellipse(balle.coo_haut.x,balle.coo_haut.y,balle.coo_bas.x,balle.coo_bas.y);
en le transformant en cela :
with form1.Image1.Canvas do begin
Pen.Color:=clblue;
Brush.Color:=clblue;
Ellipse(balle.coo_haut.x,balle.coo_haut.y,balle.coo_bas.x,balle.coo_bas.y);
end;
encore un autre truc que tu vas apprecier :
TPaintBox au lieu de TImage. Timage est plus lourd que TPaintBox est n'est pas initialement prevus pour l'animation.
un inverseur booleen, qui reduit considerablement cette procedure :
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key = vk_space then begin
Timer1.Enabled := not Timer1.Enabled;
end;
et pour finir on augmente les performances :
const
RTD : extended = 180/Pi;
procedure deplacer_balle(var balle : Tballe);
var DDG : extended;
PST,PCT : integer;
begin
with form1.Image1.Canvas do begin
Brush.Color := clWhite;
FillRect(Image1.ClientRect);
end;
with Balle do begin
DDG := direction * RTD;
PST := round( Vitesse * cos(DDG) );
PCT := round( Vitesse * sin(DDG) );
coo_haut := point( coo_haut.x+PCT, coo_haut.y+PST);
coo_bas := point( coo_bas.x+PCT, coo_bas.y+PST);
end;
controler_sortie(balle);
end;
13 oct. 2006 à 21:02
13 oct. 2006 à 14:44
13 oct. 2006 à 09:48