Optimisation et conseil

Signaler
Messages postés
10
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
5 décembre 2009
-
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
-
Bonjour
J'aurais souhaiter, avoir des conseils pour améliorer mon code
je développe un jeu d'échec variante alice pour apprendre le c++
voici mon source avec un petit manuel d'utilisation
je souhaiterai aussi savoir comment fermer l'application
merci d'avance

source

6 réponses

Messages postés
131
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
onjour,

choix 1 :
pas miS en place
idem pour le choix 4 et 5

Pour quitter :
case 6:
cout << "BYE"<<endl;
return 0;
break;// unreachable

On ne sait pas comment différencier les joueurs blancs des noirs au début.
Pat/Echec/Echec et mat/Roque non implémenter.
Lors d'une attaque, l'échiquier est réafficher deux fois.
Lors d'une partie, si je fais nouvelle partie, le plateau n'est pas vidé.
Pour améliorer grandement l'affichage, fait un system("clean"); et un affichage de l'échiquier avant d'afficher ton menu.
Tu peux enlever les parties de ton menu qui ne sont pas implémenter.

Si tu veux plus de conseil, n'hésites pas ;)
Et bon courage pour terminer ça ce WE :P

Bye
Messages postés
131
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
Ah et un autre conseil, évites de diffuser les sources d'un projet quand il s'agit d'un devoir noté...
On sait jamais, je pourrais en tirer quelques bonnes idées :P
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
C'est très bien d'avoir la démarche de demander un avis critique. Le projet documenté en doxygen, ça fait plaisir :).

Après les points positifs, les points négatifs:

Je n'ai pas regardé en détails, mais il y a beaucoup d'inélégance.
En voici une liste non exhaustive:
* using namespace std; => Beurk, à bannir. La raison t'a déjà été évoquée dans d'autre post.
* Plus d'une classe par fichier => Pas top. Une classe = un fichier
*
if (compteur>= 1)
{
   return false;
}
 else
{
  return true;
}


Aisément remplacable par:

return compteur < 1;


* D'une manière générale:
if (...)
{
  return false;
}
else
{
  // Code
}

Le return étant débranchant, peut être remplacé par:
if (...)
{
  return false;
}
// Code


*
Dangereux:
delete q,f,c,t;

Tu ne supprimes pas tout, mais juste le dernier !!!
En effet, la virgule en C/C++ veut dire: tout évaluer mais ne retourner que le dernier. Ex: int a = 1,2,3,4; // A vaut 4

A remplacer par:
delete q;
delete f
delete c;
delete t;


* m_white true> m_white
* m_white false> !m_white

* Utilise le mot clé const, lorsque quelque chose n'a pas beson d'être modifié.
* #include <stdio.h> => Tu est en C++, donc à bannir.

* D'un point de vue modélisation, j'aurais différencié Case et Piece.

* Quand tu diffuses un projet dans une tarball, nettoie le projet avant. C'est-à-dire efface les fichier temporaires (*~), les fichiers objet (*.o) et les binaires (exécutables main). Pense à faire un "make distclean" (make distclean = make clean + rm executable), ou mieux encore: crée toi une règle "make dist" ou "make tar" qui crée nettoie le projet (donc dépend de make distclean) et crée ta tarball.

Je n'ai pas tout tout regardé, j'ai juste noté toutes les inélégances que j'ai trouvé après un rapide coup d'oeil.
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
@lural
system

Pitié, non !
Ne jamais utiliser la commande system. Tu perds la portabilité de ton application pour une fonctionnalité très discutable.

system("clean");

Une application console a été conçu pour afficher des informations à la suite. Si tu cherches à rafraichir l'écran, mieux vaut se tourner vers des bibliothèques prévues à cet effet (ncurse) ou carrément passer en mode graphique.

Ce n'est en tout cas pas un bon conseil à donner à un débutant ;)
Messages postés
131
Date d'inscription
samedi 6 janvier 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
Un débutant en 3ème année de Licence Informatique ...
Et le projet étant à rendre pour ce soir minuit ...
Là je crois qu'il a d'autres soucis que la portabilité d'un jeux en mode console. Je suis tout à fait d'accord pour le fond avec toi CptPingu, mais vu les circonstances ...
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Un débutant en 3ème année de Licence Informatique ...

Je ne connait pas le niveau d'étude de la personne ayant postée, mais le code est effectivement de niveau débutant (ce qui n'est pas une critique, tous le monde passe par là).
Et le projet étant à rendre pour ce soir minuit ...

Je ne connaissait pas les tenants et les aboutissants, mais c'est vrai qu'il y a des points plus primordiaux :p