Jeu des allumettes : Code bon ou pas
Résolu
toufeux
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
-
toufeux Messages postés 43 Date d'inscription Statut Membre Dernière intervention -
toufeux Messages postés 43 Date d'inscription Statut Membre Dernière intervention -
bonjour,
je débute en programmation et j'aimerais que quelqu’un d’expérimenté me dise les défauts de mon programme. Je pense que vous connaissez le jeu des allumettes.
je débute en programmation et j'aimerais que quelqu’un d’expérimenté me dise les défauts de mon programme. Je pense que vous connaissez le jeu des allumettes.
#include <iostream> #include <string> int main(); int menu(); int configjeu(); int jeu(); int regle(); int pCondition1 = 1, pCondition2 = 3, x, y, nombreAllumettes=21; std::string joueur1; std::string joueur2; int main(){ return menu(); } int menu(){ system ("cls"); int selecteur; nombreAllumettes=21; std::cout<<"\t ******************"<<std::endl; std::cout<<"\t Jeu des Allumettes"<<std::endl; std::cout<<"\t ******************"<<std::endl; std::cout<<std::endl; std::cout<<"0.sortir du programme."<<std::endl; std::cout<<"1.jouer en mode classic."<<std::endl; std::cout<<"2.configurer les parametres."<<std::endl; std::cout<<"3.lire les regles de jeu."<<std::endl; std::cout<<"choix :"; std::cin>>selecteur; switch(selecteur){ case 0: exit(1); break; case 1: return jeu(); break; case 2: return configjeu(); break; case 3: return regle(); break; default: std::cout<<"votre doigt à peut-etre glisser"<<std::endl ;return menu(); }} int jeu(){ std::cout<<"nom du joueur 1"<<std::endl; std::cin>>joueur1; std::cout<<"nom du joueur 2"<<std::endl; std::cin>>joueur2; system ("cls"); std::cout<<"\t ******************"<<std::endl; std::cout<<"\t jeu des allumettes"<<std::endl; std::cout<<"\t ******************"<<std::endl; std::cout<<std::endl;std::cout<<std::endl; std::cout<<"le jeu commence avec "<<nombreAllumettes<<std::endl; while(nombreAllumettes>0) /*jeu*/ { std::cout<<joueur1<<" saisir un nombre"<<std::endl; std::cin>>x; if(x>pCondition2 || x<pCondition1) { std::cout<<"nombre saisi invalide"<<std::endl; } else nombreAllumettes=nombreAllumettes-x; std::cout<<"le nombre d'allumettes est de :"<< nombreAllumettes<<std::endl; std::cout<<joueur2<<" saisir un nombre"<<std::endl; std::cin>>x; if(x>pCondition2 || x<pCondition1) { std::cout<<"nombre saisi invalide"<<std::endl; } else nombreAllumettes=nombreAllumettes-x; std::cout<<"le nombre d'allumettes est de :"<< nombreAllumettes<<std::endl; if (nombreAllumettes<=0) { std::cout<<std::endl; std::cout<<"Il n'y a plus d'allumettes, c'est fini !!!"; std::cout<<" Il n'y a plus d'allumettes, c'est fini !!! "; std::cout<<" il n'y a plus d'allumettes, c'est fini !!!"<<std::endl;; } } std::cout<<std::endl; system ("pause");return menu(); } int configjeu(){ system ("cls"); std::cout<<"\t ****************************"<<std::endl; std::cout<<"\t configuration des parametres"<<std::endl; std::cout<<"\t ****************************"<<std::endl; std::cout<<std::endl; std::cout<<"entrer le nombre d'allumettes :"; std::cin>>nombreAllumettes; std::cout<<"entrer la condition minimum :"; std::cin>>pCondition1; std::cout<<"entrer la condition maximum :"; std::cin>>pCondition2; system ("pause"); return jeu(); } int regle(){ std::cout<<"\t ************"<<std::endl; std::cout<<"\t regle du jeu"<<std::endl; std::cout<<"\t ************"<<std::endl; std::cout<<std::endl; std::cout<<"les regles sont (en mode classic) :"<<std::endl; std::cout<<"\t -le but du jeu est de NE PAS retirer la derniere allumette"<<std::endl; std::cout<<"\t -vous n'avez le droit de ne retirer au minimum 1 et au maximum 3 allumettes"<<std::endl; std::cout<<std::endl; system ("pause"); std::cout<<"les conditions designent le nombre d'allumettes que l'on peut retirer à chaque tour"<<std::endl; std::cout<<std::endl; system ("pause"); return menu(); }
A voir également:
- Jeu des allumettes : Code bon ou pas
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu des logos - Télécharger - Jeux vidéo
- Jeu zuma - Télécharger - Jeux vidéo
- Jeu google - Guide
2 réponses
Salut,
Vu de loin, ça manque de commentaires...
Après coté technique, je laisse de plus compétents t'en parler.
Et un merci d'avance, n'est jamais de trop sur un forum...
Vu de loin, ça manque de commentaires...
Après coté technique, je laisse de plus compétents t'en parler.
Et un merci d'avance, n'est jamais de trop sur un forum...
Bonjour,
Sur la syntaxe:
Sur la robustesse:
Sur le fonctionnel:
Globalement, c'est pas mal continue sur cette voie.
Dalfab
Sur la syntaxe:
- Il ne faut pas utiliser de variables globales.
- Se servir du passage de paramètres aux fonctions.
- Les noms doivent être explicites ou accompagnés de commentaires (les globales x et y sont peu claires.)
- Les commentaires permettent d'améliorer la lecture, ici le code est 'simple' donc ils ne manquent pas vraiment, mais quelques explications sont parfois utiles.
- Penser à bien utiliser l'indentation.
- using namespace std, n'est pas utilisé, bonne initiative.
Sur la robustesse:
- Utiliser des return qui renvoient à une autre fonction n'est pas viable. La structure sembler marcher ici, mais un utilisateur qui ferait plein de choix finira par planter le logiciel (les fonctions successives s'empilent.)
- Du même acabit, on évite de quitter une application par exit() qui dans un programme plus complexe abouti à des objets mal libérés.
- Il y des contrôles de validité des valeurs demandées, c'est bien mais il en manque (p.e. valeurminimum peut être choisie à -1, on peut retirer plus d'allumettes que ce qui reste, ...)
- Il y a un bon découpage en fonctions, en langage C on le dirait même parfait; en C++ un découpage plus 'objet' améliorerait la lisibilité.
Sur le fonctionnel:
- Tout un programme et pourtant il n'est pas capable de dire qui a gagné, c'est dommage.
- Si le joueur1 gagne ou perd, on demande quand même au joueur2 de retirer des allumettes.
Globalement, c'est pas mal continue sur cette voie.
Dalfab
Oui,
La solution consiste à créer une fonction
gotoest même impossible ici.
La solution consiste à créer une fonction
menu()sous la forme d'une boucle. Les autres fonctions n'auront qu'à faire un simple
return, qui nous ramènera dans la boucle de la fonction
menu(). Le
returnde la fonction
menu()sera lui écrit à la place de l'appel à
exit().
Comme cela:
int menu(){
for(;;) {
system ("cls");
int selecteur;
nombreAllumettes=21;
......
std::cout<<"choix :"; std::cin>>selecteur;
switch ( selecteur ) {
case 0: return 0;
case 1: jeu(); break;
case 2: configjeu(); break;
case 3: regle(); break;
default: std::cout<<"votre doigt à peut-etre glisser"<<std::endl;
}
}
}
C'est le b-a-ba pour faire "bien et propre".