Télécharger le zip
"Le code est un peu lourd." Non, sans blagues ! 18 fois la procédure TForm1.Couleur_MouseDown !!! Il eut été plus élégant de n'en écrire qu'une qui s'occupât des 18 Tshapes concernés : Procedure TForm1.CouleursMouseDown( Sender : TObject; Button : TMouseButton; Shift : TShiftState; X, Y : Integer ); Begin CouleurChoisi := (Sender as TShape).Brush.Color; cour.Brush.Color := CouleurChoisi ; End; ...et pareil pour Choix_MouseDown Procedure TForm1.ChoixMouseDown( Sender : TObject; Button : TMouseButton; Shift : TShiftState; X, Y : Integer ); Begin (Sender as TShape).Brush.Color := CouleurChoisi; End; Et vu le paquet de TShape, un creation dynamique de deux tableaux de Tshape à deux dimensions (un pour la zone l'affichage [27x5] et un pous la zone de résultat [27x3]) aurait encore allégé le code. Juste un compteur de coups réalisés pour pointer la bonne ligne, une fonction pour afficher le coup, une fonction pour afficher le résultat. Allez, au boulot ! Ken@vo
lourd oui c'est peu dire, FireFox n'a meme pas voulu me montrer la totalité du .pas !! "PLANTAGE" lol C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !! C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !! C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !! C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !! =) ps : MasterMind is ®
Ok, je savais qu'il était lourd, néanmoins je suis la pour apprendre et je demande que ça. Dis moi Kenavo, je vois pas trop comment faire pour réaliser des tableaux de TShape. Et si je veux utiliser (Senter as TShape).Brush.color:=clwhite dans l'événement OnClick de nouvelle partie sa met une erreur pourquoi
C' est primitif comme code. Le principal etant que ça marche. Maintenant, si tu as besoin dans 1 mois de changer le programme, ça va te donner un mal de crane pas possible. Quand on dis de simplifier, ça veut dire: -faciliter la compréhension du code. -eviter d' ecrire du code répétitif remplaçable par une fonction. Sender est la parametre passé dans l' event OnClick. En fait, Sender est l' object qui a provoqué le onClick. Si tu as 4 TSpeedButtons et que tu attribues le meme event BoutonClick par exemple, en faisant click sur un des 4 TSpeedButtons, tu sauras lequel gràce à Sender genre: If Sender = SpeedButton1 Then ... else If Sender = SpeedButton2 Then ...
Salut la puce, Déclarer un tableau de TShape n'est pas un gros problème, quoiqu'il y ait quelques règles à respecter. Dans ton cas ça peut s'écrire comme suit : dans les propriétés de la form (privées ou publiques selon l'usage extérieur qui peut en être fait) tu déclares : TabCoups : Array[0..26,0..4] of TShape; ... et dans FormCreate : procedure TForm1.FormCreate(Sender: TObject); var i, j : Integer; begin for i:= 0 to 26 do for j:= 0 to 4 do begin TabCoups[i,j]:=TShape.Create(self); With TabCoups[i,j] do begin Parent := Self; //faut pas oublier Width := 25; Height := 25; Left := 8 + j*24; Top := 640 - i*24; Shape := stCircle; Brush.Color := clWhite; end; end; end; ... et après, pour changer la couleur : TabCoups[i,j].Brush.Color := NewColor; ---------------------------- Attention à Sender! Sender qui est passé par paramètre à l'évènement identifie l'émetteur de l'évènement. Par exemple, quand on clique sur un bouton, dans la procédure déclenchée par l'évènement, sender (TObjet) est le bouton (TButton). Pour accéder aux propriétés propres au bouton (comme Caption) on dit que l'objet sur lequel on a cliqué est un bouton (Sender as TButton) et on regarde ou modifie une propriété. Mais, si c'est pas un bouton, il y a problème ! Et dans ton cas, le "sender" n'est pas un TShape mais un TButton ("nouvelle partie"): il y a erreur ! On peut vérifier le type en faisant : If Sender is TShape (ou TButton).
Ok, je te remercie Kenavo, je vais essayer de regarder ça pour demain.
Sa y est j'ai essayer de vraiment optimiser mon code (peut être encore deux ou trois retouches), J'ai créé des procedure dans certains cas et, kenavo, tes tableaux marche super bien, en plus il me simplifie mon code. Merci à vous tous et si vous avez d'autre remarques à faire, je les attends avec impatiences Bisous à vous tous.
ha bah ça c de l'optimisation ! tu te sens pas plus legere ? plus simple ala lecture le code tt de meme ! bien joué =)
Merci JulioDelphi. Il est vrai que je pense toujours à utiliser des procédures. De plus les tableaux que Kenavo m'a fait utiliser permette d'allèger le code. Je vous remercie, car depuis que j'utilise ce site j'apprend beaucoup plus vite et cet apprentissage je le dois à vous tous. Bisous
Moi, ce que jaime, c'est quand remarques et conseils sont aussi vite et bien compris et mis en pratique ! Bravo ! Ken@vo
Merci kenavo, mais je suis la pour ça, écouter les remarques que l'on me fait afin d'amèliorer ma façon de programmer. D'ailleur je viens de laisser un message sur le forum afin de l'amèliorer encore un peu.
Salut, un peu en retard par rapport aux autres, Il n'y a pas besoin de faire un FORMACTIVATE pour initialiser le tableau CouleurPossible. Pour les déclarations en dehors des procedures et fonctions, il est possible d'attribuer directement les valeurs. Ainsi pour la déclaration de CouleurPossible, écrire CouleurPossible : Array[ 1..28 ] Of TColor= (clred, clblack, clgreen, clblue, clteal, clgray, cllime, clyellow, clfuchsia, claqua, clmaroon, clolive, clnavy, clpurple, clsilver, clmoneygreen, clskyblue, clinfobk); Et voilà, quelques lignes de gagnées et un code plus clair...
c'est vrai barbichette, c'est une chose à laquelle je ne pense jamais. Depuis le temps j'en ai fait un autre, mais je le met sur le réseaux car je l'ai pas fait toute seul. Je changerais ce défault à l'occasion, pour l'instant je suis sur un autre projet. Bisous à vous tous.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 598 782 membres 53 nouveaux aujourd'hui 15 441 membres club