Merci pour tous .
je suis un debutant c pour cela le code n'est pas organisé
j'ai ajouté le zip +iers fois, mais sans apparition pourquois?
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 14 nov. 2009 à 03:33
Il est vrai que c'est un peu ... redondant pour le moins.
J'ai d'ailleurs l'impression que tu traites les deux jours indépendamment mais avec le même type de code. Il serait possible d'augmenter les performances, augmenter la lisibilité et l'efficacité du code tout en le réduisant de moitié en organisant ses routines de façon logique. Ainsi, plutôt que ce gros paquet de code, tu pourrais faire des procédures (d'habitude je les écris toujours en anglais mais je vais faire un effort) :
> Initialisation
Paramètres : aucun
Description : initialise le jeu, place les pions, met les scores à zéro.
> CoupJoueur
Paramètres : numéro du joueur, numéro du pion joué et coordonnées de sa destination.
Description : appelé quand un joueur joue en posant un pion.
> CoupValide
Paramètres : numéro du joueur, numéro du pion joué et coordonnées de sa destination.
Description : vérifie si le joueur a bien le droit de poser son pion là (trop éloigné, coup interdit, ...)
> DevientDame
Paramètres : numéro du pion.
Description : transforme un pion en dame une fois qu'il est arrivé à l'autre bout du plateau.
> PeutDevenirDame
Paramètres : numéro du pion.
Description : vérifie les coordonnées du pion pour voir si il peut devenir une dame..
> VictoireJoueur
Paramètres : numéro du joueur.
Description : Appelé quand un joueur a gagné la partie.
etc, etc ... ça serait plus propre et plus efficace.
___________________
Ces critiques se veulent constructives ...
Cordialement, Bacterius !
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 14 nov. 2009 à 01:21
Que dire, déjà ça commence mal, ce n'est pas une source .NET, pas de ZIP donc pas de dpr/dfm, 1 seul composant renommé (quel chanceux), du grand bazar en perspective !
Je descends tout de même le code, moultes et moultes répétitions, jusqu'a 12 IF imbriqués ! Record battu sur C-S.
- "donner la position de x:" est 36 fois dans le code... Une constante ? Une string en ressource ?
- Certaines procedures se ressemblent, il faut donc en faire une seule avec un paramètre (ou plus)
- Je passe sur l'orthographe car vous n'êtes pas français.
- De tête, tu peux me dire à quoi sert le bouton 6, 2, 7 et 4 ? Put etre que oui si tu avais encore la tete dedans, mais d'ici 1 mois, tu devras regarder le dfm, chercher et chercher...
- Des IF à revoir, genre :
if(n2y<s2y)then
begin
if(n2x>s2x)then
begin
...
end;
end;
au lieu de :
if (n2y<s2y) and (n2x>s2x) then
begin
...
end;
- Des begin/end pour une seule ligne de code
- Indentation du code non respectée
- k:= k+1 au lieu de inc(k);
- Plusieurs instructions sur la même ligne genre :
StringGrid1.Cells[n2x,n2y]:='8'; k:=0;
pnt2:=pnt2+1; Edit4.Text:=IntToStr(pnt2);
- Question d'ergonomie : evite les showmessages pour informer l'utilisateur, c'est ennuyeux.
- Aère ton code :
if(StringGrid1.Cells[s2x-i,s2y+i]='1')or(StringGrid1.Cells[s2x-i,s2y+i]='9')then
au lieu de
if (StringGrid1.Cells[s2x-i, s2y+i] = '1') or (StringGrid1.Cells[s2x-i, s2y+i] = '9') then
- Edit1.Text:=''; = Edit1.Clear;
- la procedure initialisationpiont n'est même pas utilisée, lis tu les warninng ?
- les variables sont déclarées au mauvais endroit et ne sont pas parlantes. Que veux dire "n2x" ?!
Combien avez vous été noté ?
Ok, c'est une premiere source, pas facile de démarrer. Merci de mettre à jour la source avc le fichier dfm et dpr (faire un zip quoi...) pas les fichiers avec un ~, ni .dof, .cfg, .res.
15 nov. 2009 à 20:47
Cordialement, Bacterius !
15 nov. 2009 à 15:34
je suis un debutant c pour cela le code n'est pas organisé
j'ai ajouté le zip +iers fois, mais sans apparition pourquois?
14 nov. 2009 à 03:33
J'ai d'ailleurs l'impression que tu traites les deux jours indépendamment mais avec le même type de code. Il serait possible d'augmenter les performances, augmenter la lisibilité et l'efficacité du code tout en le réduisant de moitié en organisant ses routines de façon logique. Ainsi, plutôt que ce gros paquet de code, tu pourrais faire des procédures (d'habitude je les écris toujours en anglais mais je vais faire un effort) :
> Initialisation
Paramètres : aucun
Description : initialise le jeu, place les pions, met les scores à zéro.
> CoupJoueur
Paramètres : numéro du joueur, numéro du pion joué et coordonnées de sa destination.
Description : appelé quand un joueur joue en posant un pion.
> CoupValide
Paramètres : numéro du joueur, numéro du pion joué et coordonnées de sa destination.
Description : vérifie si le joueur a bien le droit de poser son pion là (trop éloigné, coup interdit, ...)
> DevientDame
Paramètres : numéro du pion.
Description : transforme un pion en dame une fois qu'il est arrivé à l'autre bout du plateau.
> PeutDevenirDame
Paramètres : numéro du pion.
Description : vérifie les coordonnées du pion pour voir si il peut devenir une dame..
> VictoireJoueur
Paramètres : numéro du joueur.
Description : Appelé quand un joueur a gagné la partie.
etc, etc ... ça serait plus propre et plus efficace.
___________________
Ces critiques se veulent constructives ...
Cordialement, Bacterius !
14 nov. 2009 à 01:21
Je descends tout de même le code, moultes et moultes répétitions, jusqu'a 12 IF imbriqués ! Record battu sur C-S.
- "donner la position de x:" est 36 fois dans le code... Une constante ? Une string en ressource ?
- Certaines procedures se ressemblent, il faut donc en faire une seule avec un paramètre (ou plus)
- Je passe sur l'orthographe car vous n'êtes pas français.
- De tête, tu peux me dire à quoi sert le bouton 6, 2, 7 et 4 ? Put etre que oui si tu avais encore la tete dedans, mais d'ici 1 mois, tu devras regarder le dfm, chercher et chercher...
- Des IF à revoir, genre :
if(n2y<s2y)then
begin
if(n2x>s2x)then
begin
...
end;
end;
au lieu de :
if (n2y<s2y) and (n2x>s2x) then
begin
...
end;
- Des begin/end pour une seule ligne de code
- Indentation du code non respectée
- k:= k+1 au lieu de inc(k);
- Plusieurs instructions sur la même ligne genre :
StringGrid1.Cells[n2x,n2y]:='8'; k:=0;
pnt2:=pnt2+1; Edit4.Text:=IntToStr(pnt2);
- Question d'ergonomie : evite les showmessages pour informer l'utilisateur, c'est ennuyeux.
- Aère ton code :
if(StringGrid1.Cells[s2x-i,s2y+i]='1')or(StringGrid1.Cells[s2x-i,s2y+i]='9')then
au lieu de
if (StringGrid1.Cells[s2x-i, s2y+i] = '1') or (StringGrid1.Cells[s2x-i, s2y+i] = '9') then
- Edit1.Text:=''; = Edit1.Clear;
- la procedure initialisationpiont n'est même pas utilisée, lis tu les warninng ?
- les variables sont déclarées au mauvais endroit et ne sont pas parlantes. Que veux dire "n2x" ?!
Combien avez vous été noté ?
Ok, c'est une premiere source, pas facile de démarrer. Merci de mettre à jour la source avc le fichier dfm et dpr (faire un zip quoi...) pas les fichiers avec un ~, ni .dof, .cfg, .res.
Bon courage pour la suite, j'attends le zip