Balle rebondissante

Soyez le premier à donner votre avis sur cette source.

Vue 7 952 fois - Téléchargée 667 fois

Description

Il s'agit tout simplement d'une balle bleue qui rebondit dans un composant Timage.
RÉALISÉ AVEC DELPHI 5

Codes Sources

A voir également

Ajouter un commentaire Commentaires
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
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és 5 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 16 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és 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
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és 5 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 16 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és 2226 Date d'inscription dimanche 5 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2010 14
13 oct. 2006 à 14:44
Les Fichiers *.* ne sont pas utiles dans le zip.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.