Balle rebondissante

Soyez le premier à donner votre avis sur cette source.

Vue 7 855 fois - Téléchargée 658 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
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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.
Messages postés
5
Date d'inscription
jeudi 2 juin 2005
Statut
Membre
Dernière intervention
16 octobre 2006

Merci beaucoup F0XI pour tout ces conseils d'optimisation. Ca m'a appris pleins de choses. :)
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
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;
Messages postés
5
Date d'inscription
jeudi 2 juin 2005
Statut
Membre
Dernière intervention
16 octobre 2006

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.
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
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.