Jeu des allumettes : Code bon ou pas
Résolu/Fermé
toufeux
Messages postés
43
Date d'inscription
vendredi 24 février 2017
Statut
Membre
Dernière intervention
28 novembre 2017
-
Modifié par noctambule28 le 24/02/2017 à 22:50
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017 - 25 févr. 2017 à 17:08
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017 - 25 févr. 2017 à 17:08
A voir également:
- Jeu des allumettes : Code bon ou pas
- Code asci - Guide
- Code 80072efe ✓ - Forum Windows
- Freewifi secure code ✓ - Forum Réseau
- Netflix code - Guide
- Code puk maroc telecom ✓ - Forum Mobile
2 réponses
noctambule28
Messages postés
31764
Date d'inscription
samedi 12 mai 2007
Statut
Webmaster
Dernière intervention
13 février 2022
2 866
24 févr. 2017 à 22:47
24 févr. 2017 à 22:47
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...
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
100
25 févr. 2017 à 13:55
25 févr. 2017 à 13:55
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
toufeux
Messages postés
43
Date d'inscription
vendredi 24 février 2017
Statut
Membre
Dernière intervention
28 novembre 2017
25 févr. 2017 à 14:54
25 févr. 2017 à 14:54
merci pour toute test remarques, mais par quoi je peux remplacer return car goto est deconseillé. :)
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
100
>
toufeux
Messages postés
43
Date d'inscription
vendredi 24 février 2017
Statut
Membre
Dernière intervention
28 novembre 2017
25 févr. 2017 à 15:47
25 févr. 2017 à 15:47
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().
toufeux
Messages postés
43
Date d'inscription
vendredi 24 février 2017
Statut
Membre
Dernière intervention
28 novembre 2017
>
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
25 févr. 2017 à 16:27
25 févr. 2017 à 16:27
heu je crois que tu m'as perdu la...
j'ai pas trop compris comment on crée la fonction menu sous la forme d'une boucle.
j'ai pas trop compris comment on crée la fonction menu sous la forme d'une boucle.
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
100
>
toufeux
Messages postés
43
Date d'inscription
vendredi 24 février 2017
Statut
Membre
Dernière intervention
28 novembre 2017
Modifié par Dalfab le 25/02/2017 à 16:41
Modifié par Dalfab le 25/02/2017 à 16:41
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;
}
}
}
toufeux
Messages postés
43
Date d'inscription
vendredi 24 février 2017
Statut
Membre
Dernière intervention
28 novembre 2017
>
Dalfab
Messages postés
703
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
1 mars 2023
25 févr. 2017 à 17:08
25 févr. 2017 à 17:08
ok merci, je vais tacher de corriger ça :]
24 févr. 2017 à 22:52
24 févr. 2017 à 23:25
C'est le b-a-ba pour faire "bien et propre".
Modifié par noctambule28 le 25/02/2017 à 11:48
#include <iostream> #include <string> int main(); /*declaration des variables */ 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"); /*menu du jeu*/ 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; /*jeu*/ 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) { 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"); /*menu de configuration*/ 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; /*regle du jeu..*/ 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(); }