guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006
-
23 févr. 2006 à 09:21
djfeeler
Messages postés18Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 2 juin 2006
-
10 mars 2006 à 10:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
djfeeler
Messages postés18Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 2 juin 2006 10 mars 2006 à 10:23
ok merci je vais corriger cela !!!
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 9 mars 2006 à 21:52
J'ai eut le même soucie sur un mastermind que j'avais fait (dispo sur vbfrance.com), c'est un problème qu'on retrouve regulièrement sur la conception de ce jeu.
m4nn1x
Messages postés2Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 9 mars 2006 9 mars 2006 à 19:00
Salut, j'ai constaté une erreur dans ton programme en ce qui concerne les indices sur les pions bien placés et mal placés. En effet, si la combinaison à trouver contient 1 pion rouge (par exemple) et que la proposition du joueur contient 3 pions rouges dont 1 bien placé, ton programme dira: 1 bien placé et 2 mal placés. c'est faux, il n'y a qu'un bien placé et 0 mal placé. Tu dois compter les indices selon la combinaison à trouver et non selon la proposition du joueur. En clair, la somme des indices (bien ou mal placés) doit être égale à la somme des pions proposés effectivement contenus dans la combinaison à trouver.
J'espère que mon conseil te sera utile.
Bonne continuation.
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 25 févr. 2006 à 02:53
a la prochaine mises a jours, pour faire ton zip supprime ces fichiers de l'archive :
pour le code j'ai vus une autre optimisation possible et j'en profite pour faire un precieux rappel :
- Pour les portions de codes repetée a plusieurs endroit dans le programme, la transformation en fonction ou procedure unique de cette derniere est a penser!
je dis cela notement pour la selection d'une nouvelle combinaison secrete cela supprimerais plusieurs lignes de code inutile.
et j'en profite aussi pour rappeler ceci :
- Peu importe que votre programme soit utile ou non, soit complexe ou non, ce que l'on regarde surtout c'est son code : syntaxe, discipline d'indentation, optimisation multi-niveau, commentaires.
Si une partie de code vous semble louche, inadaptée ou lourde c'est qu'elle l'est surrement et qu'une meilleure solution doit exister.
djfeeler
Messages postés18Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 2 juin 2006 23 févr. 2006 à 20:56
merci pour cet allègement de code !!!
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 16:38
ouah fOxy,comme toujours très efficace, grosse optimisation et allegement de code, bravo!
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 23 févr. 2006 à 16:29
aie ...
alors deja, virer toutes les shapes crée en dur.
utiliser une matrice deja existante pour les créer dynamiquement:
Plateau = array[1..10,1..5] of TShape;
procedure CreatePlateau;
var x, y : integer;
begin
for x := 1 to 10 do
for y := 1 to 5 do begin
Plateau[x,y] := TShape.Create;
Plateau[x,y].parent:= Form1;
Plateau[x,y].shape := stCircle;
Plateau[x,y].width := 20;
Plateau[x,y].height:= 20;
Plateau[x,y].left := 23 + (30*y);
Plateau[x,y].right := 34 + (30*x);
end;
end;
par exemple, cela allegeras beaucoup le code et le programme.
ensuite pour ce genre de truc :
procedure Tform1.BtrougeClick(Sender: TObject);
begin
if (compteur >=1) and (compteur<=5)
then
begin
proposition_joueur[compteur].Brush.color := clred;
compteur:=compteur+1;
end;
end;
fait plutot (declarer l'unité math dans les uses) :
procedure Tform1.BtrougeClick(Sender: TObject);
begin
if inrange(compteur,1,5) then begin
proposition_joueur[compteur].Brush.color := clred;
inc(compteur);
end;
end;
pour ça :
if nb = 1 then
begin
Bp1.Caption := inttostr(bienplace);
Mp1.Caption := inttostr(malplace);
end;
if nb = 2 then
begin
Bp2.Caption := inttostr(bienplace);
Mp2.Caption := inttostr(malplace);
end;
if nb = 3 then
begin
Bp3.Caption := inttostr(bienplace);
Mp3.Caption := inttostr(malplace);
end;
if nb = 4 then
begin
Bp4.Caption := inttostr(bienplace);
Mp4.Caption := inttostr(malplace);
end;
if nb = 5 then
begin
Bp5.Caption := inttostr(bienplace);
Mp5.Caption := inttostr(malplace);
end;
if nb = 6 then
begin
Bp6.Caption := inttostr(bienplace);
Mp6.Caption := inttostr(malplace);
end;
if nb = 7 then
begin
Bp7.Caption := inttostr(bienplace);
Mp7.Caption := inttostr(malplace);
end;
if nb = 8 then
begin
Bp8.Caption := inttostr(bienplace);
Mp8.Caption := inttostr(malplace);
end;
if nb = 9 then
begin
Bp9.Caption := inttostr(bienplace);
Mp9.Caption := inttostr(malplace);
end;
if nb = 10 then
begin
Bp10.Caption := inttostr(bienplace);
Mp10.Caption := inttostr(malplace);
end;
fait plutot :
function Resultat(var lb1,lb2 : TLabel);
begin
lb1.caption := inttostr(bienplace);
lb2.caption := inttostr(malplace);
end;
// ---- //
case nb of
1 : resultat(bp1,mp1);
2 : resultat(bp2,mp2);
3 : resultat(bp3,mp3);
4 : resultat(bp4,mp4);
5 : resultat(bp5,mp5);
6 : resultat(bp6,mp6);
7 : resultat(bp7,mp7);
8 : resultat(bp8,mp8);
9 : resultat(bp9,mp9);
10: resultat(bp10,mp10);
end;
grace a la matrice de tshape tu pourras pondre une fonction pratique :
procedure ShowShape(var matrice : TShapeMatrice; index : array of integer);
var x : integer;
begin
for x := 0 to high(index) do matrix[index[x]].visible := true;
end;
procedure HiddeShape(var matrice : TShapeMatrice; index : array of integer);
var x : integer;
begin
for x := 0 to high(index) do matrix[index[x]].visible := false;
end;
pour la mise en place de la sequence secrete : voir le bug randomrange dans les codes sources et faire :
{randomize doit etre declarer une seule fois dans le FormCreate}
const ColorTable array[1..5] of TColor (clyellow,clblue,clred,clblack,clgreen);
// --- //
for i := 1 to 5 do begin
nbhasar := round(randomrange(100,599)/100); // augmente les variations de couleurs
proposition_ordi[i].Brush.Color := ColorTable[nbHasar];
tableau_couleur[i] := ColorTable[nbHasar];
end;
voila, bonne optimisation...
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 23 févr. 2006 à 13:24
Entre compiler un exe, et double cliquer dessus ... effectivement, lol
Pour compiler faut faire "Projets" > "Compiler [Nom Projet]"
Pour les options du projet et de la compilation c'est "Projets" > "Options"
Trivial non ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 févr. 2006 à 11:35
ah oui, le double clic sur exe, ça c'est surement très édifiant...
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 11:35
Apprendre a fair un exe n'est pas apprendre le delphi! il n'y a aucune relation avec du code. peut on clore ce sujet?
jdalton42
Messages postés200Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention19 août 2009 23 févr. 2006 à 11:32
rien a voir, je demande comment executer tu dis bien "de permettre a tous de pouvoir apprendre" et bien moi je voulais simplement apprendre a executer le delphi...
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 11:28
non,tu demandais un exe, ce qui est different. ici,on echange des codes delphi afin de faire partager ses connaissances et de permettre a tous de pouvoir apprendre et développer. Si tu veux des exe, va sur un site adéquat
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 févr. 2006 à 11:27
Mais non, tu demandes exe en précisant que tu ne connais rien au delphi.
Pose des questions sur le code et tout ira bien.
jdalton42
Messages postés200Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention19 août 2009 23 févr. 2006 à 11:23
tu dis bien lieu d'entre-aide alors pourquoi supprimer mes postes? s'était un peut d'aide que je demandais... tsssssss vrément
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 févr. 2006 à 11:09
Non delphiste passer son chemin, CS n'est pas freeware.com mais un lieu d'entre-aide pour développeurs.
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 10:04
Et Les caption des boutons qui s'appellent "quittez, jouez",c'est pas terrible de les faire finir par un "z",non?
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 09:43
De plus,dans ton a propos, qu'est ce que fait un copyright?
Ensuite, presque aucun composant n'est nommé,ce qui ne facilite pas la lecture,bien que tu ais commenté! Pour finir, ben ca fonctionne, je continue a décortiqué tout ca !!
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 09:23
De plus:
Tous les fichiers qui ont une extension qui commence par le caractère "~"
sont a supprimer ce sont des copies de sauvegardes que Delphi fait automatiquement.
guigui265
Messages postés113Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention16 avril 2006 23 févr. 2006 à 09:21
Salut, corrige ton zip:
seul les deux fichiers *.Pas les deux *.Dfm le *.Dpr sont nécessaire le reste tu peux le retirer vas voir dans les tuto comment faire une zip pour Codes Sources par f0xi. De plus, l'.exe n'est pas obligatoire!
@+
guillaume
10 mars 2006 à 10:23
9 mars 2006 à 21:52
9 mars 2006 à 19:00
J'espère que mon conseil te sera utile.
Bonne continuation.
25 févr. 2006 à 02:53
mastermind/Aide.~dfm
mastermind/Aide.~pas
mastermind/Aide.dcu
mastermind/apropos.~dfm
mastermind/apropos.~pas
mastermind/apropos.dcu
mastermind/intmaster.~ddp
mastermind/intmaster.~dfm
mastermind/intmaster.~pas
mastermind/intmaster.dcu
mastermind/intmaster.ddp
mastermind/mastermind.~dpr
mastermind/mastermind.cfg
mastermind/mastermind.dof
mastermind/mastermind.exe
pour le code j'ai vus une autre optimisation possible et j'en profite pour faire un precieux rappel :
- Pour les portions de codes repetée a plusieurs endroit dans le programme, la transformation en fonction ou procedure unique de cette derniere est a penser!
je dis cela notement pour la selection d'une nouvelle combinaison secrete cela supprimerais plusieurs lignes de code inutile.
et j'en profite aussi pour rappeler ceci :
- Peu importe que votre programme soit utile ou non, soit complexe ou non, ce que l'on regarde surtout c'est son code : syntaxe, discipline d'indentation, optimisation multi-niveau, commentaires.
Si une partie de code vous semble louche, inadaptée ou lourde c'est qu'elle l'est surrement et qu'une meilleure solution doit exister.
23 févr. 2006 à 20:56
23 févr. 2006 à 16:38
23 févr. 2006 à 16:29
alors deja, virer toutes les shapes crée en dur.
utiliser une matrice deja existante pour les créer dynamiquement:
Plateau = array[1..10,1..5] of TShape;
procedure CreatePlateau;
var x, y : integer;
begin
for x := 1 to 10 do
for y := 1 to 5 do begin
Plateau[x,y] := TShape.Create;
Plateau[x,y].parent:= Form1;
Plateau[x,y].shape := stCircle;
Plateau[x,y].width := 20;
Plateau[x,y].height:= 20;
Plateau[x,y].left := 23 + (30*y);
Plateau[x,y].right := 34 + (30*x);
end;
end;
par exemple, cela allegeras beaucoup le code et le programme.
ensuite pour ce genre de truc :
procedure Tform1.BtrougeClick(Sender: TObject);
begin
if (compteur >=1) and (compteur<=5)
then
begin
proposition_joueur[compteur].Brush.color := clred;
compteur:=compteur+1;
end;
end;
fait plutot (declarer l'unité math dans les uses) :
procedure Tform1.BtrougeClick(Sender: TObject);
begin
if inrange(compteur,1,5) then begin
proposition_joueur[compteur].Brush.color := clred;
inc(compteur);
end;
end;
pour ça :
if nb = 1 then
begin
Bp1.Caption := inttostr(bienplace);
Mp1.Caption := inttostr(malplace);
end;
if nb = 2 then
begin
Bp2.Caption := inttostr(bienplace);
Mp2.Caption := inttostr(malplace);
end;
if nb = 3 then
begin
Bp3.Caption := inttostr(bienplace);
Mp3.Caption := inttostr(malplace);
end;
if nb = 4 then
begin
Bp4.Caption := inttostr(bienplace);
Mp4.Caption := inttostr(malplace);
end;
if nb = 5 then
begin
Bp5.Caption := inttostr(bienplace);
Mp5.Caption := inttostr(malplace);
end;
if nb = 6 then
begin
Bp6.Caption := inttostr(bienplace);
Mp6.Caption := inttostr(malplace);
end;
if nb = 7 then
begin
Bp7.Caption := inttostr(bienplace);
Mp7.Caption := inttostr(malplace);
end;
if nb = 8 then
begin
Bp8.Caption := inttostr(bienplace);
Mp8.Caption := inttostr(malplace);
end;
if nb = 9 then
begin
Bp9.Caption := inttostr(bienplace);
Mp9.Caption := inttostr(malplace);
end;
if nb = 10 then
begin
Bp10.Caption := inttostr(bienplace);
Mp10.Caption := inttostr(malplace);
end;
fait plutot :
function Resultat(var lb1,lb2 : TLabel);
begin
lb1.caption := inttostr(bienplace);
lb2.caption := inttostr(malplace);
end;
// ---- //
case nb of
1 : resultat(bp1,mp1);
2 : resultat(bp2,mp2);
3 : resultat(bp3,mp3);
4 : resultat(bp4,mp4);
5 : resultat(bp5,mp5);
6 : resultat(bp6,mp6);
7 : resultat(bp7,mp7);
8 : resultat(bp8,mp8);
9 : resultat(bp9,mp9);
10: resultat(bp10,mp10);
end;
pour ce genre de code :
Shape56.Visible := true ;
Shape57.Visible := true ;
Shape58.Visible := true;
shape59.Visible := true;
shape60.Visible := true;
grace a la matrice de tshape tu pourras pondre une fonction pratique :
procedure ShowShape(var matrice : TShapeMatrice; index : array of integer);
var x : integer;
begin
for x := 0 to high(index) do matrix[index[x]].visible := true;
end;
procedure HiddeShape(var matrice : TShapeMatrice; index : array of integer);
var x : integer;
begin
for x := 0 to high(index) do matrix[index[x]].visible := false;
end;
utilisation :
ShowShape(plateau,[56,57,58,59,60]);
HiddeShape(plateau,[56,57,58,59,60]);
pour la mise en place de la sequence secrete : voir le bug randomrange dans les codes sources et faire :
{randomize doit etre declarer une seule fois dans le FormCreate}
const ColorTable array[1..5] of TColor (clyellow,clblue,clred,clblack,clgreen);
// --- //
for i := 1 to 5 do begin
nbhasar := round(randomrange(100,599)/100); // augmente les variations de couleurs
proposition_ordi[i].Brush.Color := ColorTable[nbHasar];
tableau_couleur[i] := ColorTable[nbHasar];
end;
voila, bonne optimisation...
23 févr. 2006 à 13:24
Pour compiler faut faire "Projets" > "Compiler [Nom Projet]"
Pour les options du projet et de la compilation c'est "Projets" > "Options"
Trivial non ?
23 févr. 2006 à 11:35
23 févr. 2006 à 11:35
23 févr. 2006 à 11:32
23 févr. 2006 à 11:28
23 févr. 2006 à 11:27
Pose des questions sur le code et tout ira bien.
23 févr. 2006 à 11:23
23 févr. 2006 à 11:09
23 févr. 2006 à 10:04
23 févr. 2006 à 09:43
Ensuite, presque aucun composant n'est nommé,ce qui ne facilite pas la lecture,bien que tu ais commenté! Pour finir, ben ca fonctionne, je continue a décortiqué tout ca !!
23 févr. 2006 à 09:23
Tous les fichiers qui ont une extension qui commence par le caractère "~"
sont a supprimer ce sont des copies de sauvegardes que Delphi fait automatiquement.
23 févr. 2006 à 09:21
seul les deux fichiers *.Pas les deux *.Dfm le *.Dpr sont nécessaire le reste tu peux le retirer vas voir dans les tuto comment faire une zip pour Codes Sources par f0xi. De plus, l'.exe n'est pas obligatoire!
@+
guillaume