Déclaration d'une condition

Fermé
aziz_alg80 Messages postés 378 Date d'inscription vendredi 12 février 2010 Statut Membre Dernière intervention 30 mars 2020 - 13 nov. 2014 à 20:45
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 - 30 nov. 2014 à 11:14
Bonjour, tout le monde;

Je suis arrivé à réaliser une petite application qui consiste à faire bouger une boule (Shape5, forme de cercle, nommée C) dans un carré composé de quatre paroies (Shape1, 2, 3, 4, toutes de forme de rectangle (deux horizontaux et deux verticaux), nommées b1, b2, b3, et b4)

b1 étant la paroie verticale - gauche
b2 horizontale - haute
b3 verticale - droite
b4 horizontale - basse

les conditions qui régissent le mouvement de cette boule C dans le carré formé des quatre paroies b1, b2, b3, b4 sont bien :

if c.Left=b1.Left+b1.Width
if c.top=b2.Top+b2.Height
if c.Left+c.Width=b3.Left
if c.Top+c.Height=b4.Top

chaque condition se répète quatre fois dans le programme.

Ma question :
* Est ce qu'il y a une possibilité de déclarer les quatre conditions cond1, cond2, cond3, cond4 pour éviter de les réécrire (avec leurs syntaxes complexes) à chaque fois ?

* Si oui, ou ça et comment? (parce que j'ai beaucoup essayé, mais je ne suis pas arrivé)

Merci pour votre attention.

4 réponses

solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 2
22 nov. 2014 à 07:40
Salut,
Ca rappelle mes premiers programmes, il y a ........., c'était une autre vie.
Oui, tu peux mettre tes conditions dans une proc unique que tu appelles après chaque mouvement (à condition que les actions faîtes soient identiques quel que soit le sens du mouvement).

procedure TrtPosition;
begin
if c.Left=b1.Left+b1.Width then
...
else if c.top=b2.Top+b2.Height then
...
else if c.Left+c.Width=b3.Left then
...
else if c.Top+c.Height=b4.Top then
... ;
end;

Ah, vu que tes "murs" semblent être fixes, tu peux, dans ta procedure FormCreate, déjà calculer les positions des murs, car il est plus propre et plus rapide de calculer çà une seule fois.
wLeft := b1.left+b1.width;
wTop := b2.top-b2.height;
wRight := b3.left;
wBott := b4.top;
Bon courage.
solilog
0
aziz_alg80 Messages postés 378 Date d'inscription vendredi 12 février 2010 Statut Membre Dernière intervention 30 mars 2020 22
28 nov. 2014 à 17:16
Tout d'abord je te remercie pour l'intérêt que tu as accordé à mon problème.

1- Je commence par la fin :
Non les murs ne sont pas fixes, c'est pour cela que je veux que mon programme prenne en considération leurs positions ainsi que leurs hauteurs et largeurs.

2- Je tiens à vous informer que mon programme tourne bien avec la logique que j'ai choisie.
Je peux également adopter le choix de mettre les quatre conditions dans une procédure et faire le nécessaire pour chacune d'elle (bien que c'est un peu difficile) mais ce n'est plus l'objectif derrière ma question.
L'objectif est de savoir s'il y a une possibilité de déclarer une condition pour pouvoir (par la suite) l'appeler par le nom qu'on lui affecte, parce que (j'ai oublié de le dire) je suis tout débutant en Delphi, et j'ai beaucoup de chose à apprendre.

Encore une fois merci pour votre intérêt.
0
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 2
30 nov. 2014 à 11:13
salut
0
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 2
30 nov. 2014 à 11:14
Re ...
appeler une confition par son nom signifie (en prog) appeler une fonction ou une procédure. Pour t'aider à améliorer ton code, il faudrait que tu le publies ...
Bye.
solilog
0