Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

THE HANGED


Information sur la source

Catégorie :Jeux Classé sous : le pendu, the hanged, jeu vidéo, jeu mots, console Niveau : Débutant Date de création : 07/06/2008 Date de mise à jour : 14/06/2008 15:59:30 Vu / téléchargé: 1 962 / 61

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Le fameux jeu du Pendu écrit en C++.
Un mode versus Ordinateur est disponible en plus du mode Joueur Vs Joueur.
Un fichier texte contenant des milliers de mots français est livré pour que l'ordinateur puisse en piocher un au hasard. Les entrees sont gérées de telle manière à ce que vous puissez aussi bien rentrer une lettre en majuscule qu'en minuscule.
Assez sympathique même si le programme ne gère pas les exceptions d'entrées.
 

Source

  • Tout est dans le zip.
Tout est dans le zip.

Conclusion

Merci de ne pas critiquer violemment mon code ou ma manière de coder.
Je suis débutant et ose espérer politesse de votre part en vue de m'améliorer.
N'hésitez pas à me donner des conseils, je les prendrai avec engouement.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

07 juin 2008 16:37:49 :
Oubli des sources de ma part... L'application a été renommé en The Hanged.exeRename. Renommez le en The Hanged.exe pour pouvoir y jouer.
14 juin 2008 15:59:30 :
Ecriture de la source en POO. Plus de string, que des vector.

Commentaires et avis

signaler à un administrateur
Commentaire de onacluv le 09/06/2008 13:40:28

Aucun conseil à apporter ?

signaler à un administrateur
Commentaire de onacluv le 09/06/2008 14:58:37

Svp, j'aimerai vraiment avoir le conseil de personnes expérimentées pour m'améliorer...

signaler à un administrateur
Commentaire de Spoolega le 09/06/2008 18:58:43

Bonjour,
Dans ton main, tu viens tester tout de suite ta variable 'choixMenu' dans le while... elle est bien déclarée mais absolument initialisée, ca me "gène" un peu.
Ca ne provoque pas un warning ? O_O

je n'ai pas regardé le reste.

++

signaler à un administrateur
Commentaire de Spoolega le 09/06/2008 23:57:32

absolument pas*

signaler à un administrateur
Commentaire de jojo930 le 10/06/2008 06:02:26

Salut,

Quel est l'interêt de dire "je l'ai écris en C++" si ton code est pas orienté objet ?
Utilisation de system("CLS") <-- Pas portable.
Bon code pour débuter, mais après...

Essai encore :) !

signaler à un administrateur
Commentaire de onacluv le 10/06/2008 08:25:49

Bonjour messieurs !  :)

Tout d'abord, merci d'avoir répondu et de m'apporter vos conseils...

Spoolega: Je vais initialiser ça, tu as raison. Pas de warning cependant...
Merci.

JOJO930: C'est vrai, aucune utilisation de la POO... Je me dois de te poser une question... Faut-il utiliser la POO dans le cas où un seul objet sera instancié ?
Simplement pour "ranger les fonctions" ?
Dans un cas tel que ce petit jeu, quelles classes devrai-je créer ? Mot, Joueur, AI ? Merci de m'éclairer un peu sur ce point qui me semble obscur...

Quant à la portabilité de mon code, je suis d'accord et me suis toujours rendu compte de ce défaut. J'utilise en permanence les deux fonctions systemes DOS "CLS" et "PAUSE", car je ne connais pas d'alternative... Si tu as un lien à ce sujet, ou tout simplement la réponse, je suis preneur !
En attendant, je vais modifier mon code pour l'adapter à la POO et je remettrai plus tard en ligne... Merci !  :)

signaler à un administrateur
Commentaire de onacluv le 10/06/2008 08:28:29

Euuh... Je ferai ça après avoir obtenu des réponses... Là je suis au CDI du lycée donc... ce sera pour ce soir...

signaler à un administrateur
Commentaire de Pistol_Pete le 10/06/2008 11:15:11

Salut

Voila j'apporte aussi quelques remarques:
-Pourquoi inclure vector.h alors que tu ne t'en sert pas?
-Dans ta fonction nombreAleatoire, il est inutile d'appeler srand() a chaque fois que tu appeles cette fonction. srand sert a initialiser le random. Il doit donc etre executer UNE SEULE fois au debut du programme.

Voila pour les remarques. J'ajouterai que c'est bien commenté et que l'organisation du programme est bonne. Il reste maintenant a abandonner les string et a pourquoi pas faire une petite interface graphique.

Bonne continuation
A+

signaler à un administrateur
Commentaire de onacluv le 10/06/2008 19:55:03

Salut Pistol_Pete !   :]
Bien vu pour le vector.h !  ;)  Je m'en étais servi pour stocker les lettres déjà entrées dans un vector< char > à grand coup de push_back()...
Finalement j'ai décidé de tout stocker dans une chaine string pour éviter d'avoir à inclure cette bibli... ce que j'ai oublié de retirer !  :D
Merci également pour le srand(), tu as raison c'est une grosse gourde de ma part ! :)
Un point que je ne comprends pas cependant... Pourquoi me conseilles-tu d'abandonner les string ? Je dois employer de simples tableaux de char C ???
Quel est le défaut de cet emploi ?
Merci en tout cas pour ton aide et en espérant avoir à refaire à tes précieux conseils, je te dis à la prochaine !  :)

signaler à un administrateur
Commentaire de jojo930 le 11/06/2008 05:45:26

Arf c'est sûr qu'il n'y a pas grand chose à mettre en POO ...
Pour effacer la console (Testé sous Linux) : cout << "\033[2J" << endl; ou encore system("clear");
Dans tout les cas, je pense qu'il est préférable d'éviter les system("cls/clear"), je trouve ça brouillon...
Je me demande pourquoi il n'y a pas de fonctions POSIX pour cela, d'ailleurs.

Bye.

signaler à un administrateur
Commentaire de onacluv le 11/06/2008 08:08:07

Ok génial ! :D
Je vais retaper mon code cet après-midi en l'adaptant à vos conseils et en intégrant la notion de POO ( genre une structure/classe MotMystere...).
Je verrai bien. :)
Merci pour le "\033[2J", je ne connaissais pas du tout ce genre de chaine bizarre...  :)
Je vous remercie tous, JOJO930, Spoolega et Pistol_Pete, en espérant pouvoir de nouveau compter sur vos conseils et astuces après la mise à jour du code.
Bye, bonne journée.  :]

signaler à un administrateur
Commentaire de onacluv le 11/06/2008 17:24:44

Pffffffffffiouuuuuuuuuuu...........
Enfin, ça compile !
J'ai passé un bon bout de temps à améliorer le code, sa lisibilité... et surtout à l'adapter à la POO !
J'ai suivi vos conseils, reste deux trois trucs à régler au niveau de deux fonctions statiques...
J'ai fait en sorte de ne pas utiliser un seul string pour faire hommage à pistol_Pete.  ;)
J'ai ainsi tout remplacer par des vecteurs< char >...
Ca m'a pas mal compliqué la vie mais maintenant ça fonctionne !
Je règle les deux trois détails et j'édite !

signaler à un administrateur
Commentaire de Sodams le 14/06/2008 01:12:15

Je n'aime pas les longs main();

J'opterais plus tôt pour une fonction menu supplémentaire.

L'avantage de la POO, est de pouvoir réutiliser tes classes plus tard.
Si un jour tu veux faire un pendu avec une belle interface, tu n'auras plus qu'a reprendre ta classe.
Cela te permet également d'avoir beaucoup moins de variables à passer en paramètre (et donc, de moins se prendre la tête avec les références).

signaler à un administrateur
Commentaire de Sodams le 14/06/2008 01:17:11

Encore une chose (oouuuuhhh double post le vilain)

Essaie d'optimiser au maximum ton code.
Dans ta fonction ici tu répètes 2 fois des même lignes :

afficherTitre();
et system("PAUSE");

# void finPartie(string &motTrouve, string &motMystere) {
# if(motTrouve == motMystere) {
# afficherTitre();
# cout << " VOUS AVEZ TROUVE LE MOT MYSTERE !" << endl << endl;
# cout << " Ce dernier etait bien : "<< motMystere <<"" << endl << endl << endl << " ";
# system("PAUSE");
# }
#
# else {
# afficherTitre();
# cout << " VOUS AVEZ PERDU !" << endl << endl;
# cout << " Le mot mystere etait : "<< motMystere <<"" << endl << endl << endl << " ";
# system("PAUSE");
# }
# }

Qui deviendrait donc :-)

# void finPartie(string &motTrouve, string &motMystere) {
# afficherTitre();
# if(motTrouve == motMystere) {
#     cout << " VOUS AVEZ TROUVE LE MOT MYSTERE !" << endl << endl;
#     cout << " Ce dernier etait bien : "<< motMystere <<"" << endl << endl << endl << " ";
# }
# else {
#     cout << " VOUS AVEZ PERDU !" << endl << endl;
#     cout << " Le mot mystere etait : "<< motMystere <<"" << endl << endl << endl << " ";
#
# }
# system("PAUSE");
# }

signaler à un administrateur
Commentaire de onacluv le 14/06/2008 13:31:43

Tu as raison Sodams, merci du conseil.
En fait j'ai tout recodé cela fait déjà un moment en POO.
Le code est beaucoup mieux pensé et beaucoup plus digeste.
Je me retrouve avec un main et une classe Mystere qui contient toutes ses fonctions plus 3, 4 statiques pour afficher le titre ETC...
Je posterai quand j'en aurais le temps, la source étant sur un autre ordinateur que celui ayant la connexion au NET.

Sodams :  oouuuuhhh double post le vilain.
----) Bienvenue au club !  :D

signaler à un administrateur
Commentaire de onacluv le 14/06/2008 17:37:06

Voilà, la nouvelle source est postée.
Lachez vos critiques !  :)

Ps: "cout << "\033[2J" << endl;" ne fonctionne pas sous Vista.
J'ai laissé donc le code comme avant à ce niveau.

signaler à un administrateur
Commentaire de Pistol_Pete le 16/06/2008 10:57:47 8/10

Salut

Bon voila d'autres petits commentaires:
Pourquoi declares-tu pour toutes tes boucles des "unsigned long int", des simples int ne sont t'il pas suffisant(32767 caracteres au min tout de meme!)?
Beaucoup plus important, il ne faut jamais mettre dans une boucle des vector ( truc.size() ). A chaque fois que la boucle s'incremetera, il recalculera la taille du vector ce qui est completement inutile. Il faut faire quelque chose comme ca:
int size= truc.size();
for(int i;i<size;i++)
...

Sinon, la POO est bien assimile et c'est toujours aussi bien commente.

En fait je disais de laisser tomber les string pour des char, pour que tu geres toi meme la gestion de la memoire. Les string, les vector, passent beaucoup de temps a faire des realloc alloc et free ce qui est couteux en performance.
Autre avantage, il est aussi tres formateur de le faire par toi meme, meme si au debut tu obtiendras quelque chose de moins optimise que les string ou vector.

Je te mets 8/10 pour tous les efforts concentits et pour cette source qui pourra aider les debutants.

A+
  

signaler à un administrateur
Commentaire de onacluv le 16/06/2008 15:45:01

Merci sincèrement pour cette note.
Je vais me mettre à une nouvelle mise à jour du code en gérant donc manuellement la mémoire à grand coups de new et delete[]...
Je sais me servir de ceci mais n'ai jamais réellement utilisé ce concept. Le résultat risque de faire un petit peu brouillon au début... En espérant pouvoir de nouveau vous faire confiance quand à vos conseils formateurs.
Merci encore

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

effacer l'ecran de la console dos en C [ par gollum ] Comment effecer l'ecran de la console DOS en C ? [VC++] Taille du text dans une application console [ par Cybmat ] SalutVoila je voudrai savoir comment on change la taille du text ecrit dans uneapplication console avec printf() .Merci d'avance BCBv3. Utilisation de AnsiString en mode console [ par jm14d ] Pour utiliser la classe AnsiString sous Borland v3, en mode graphique c'est OK : j'inclus VCL.h et ça fonctionne. Par contre en mode console je ne m'e comment utilise t on les couleurs sous la console [ par psycho ] j aimerais savoir quels sont les instructions qui permettent d incorporer de la couleur sous la console(j utilise visual studio), ainsi que les fichie Propriété de la fenetre de console [ par Orkblutt ] Salut,j'aimerai fixer les parametres de la fenetre de console: largeur, hauteur, tampon...Quelle est la classe à utiliser pour configurer ces parametr Du son sous console dos (devcpp) ? [ par dionysos ] Bonjour,Quelles fonctions et quelles bibliotheques utiliser pour emettre des sons (de differentes tonalites ou de differentes frequences), en C, conso Du son sous console dos...? [ par dionysos ] Bonjour,Quelles fonctions et quelles bibliotheques utiliser pour emettre des sons (de differentes tonalites ou de differentes frequences), en C, conso Du son sous console dos???? [ par dionysos ] bonjour,avec devcpp quelles fonctions et quelles bibliotheques utiliser pour générer du son en console dos, et en C.Merci focus console [ par jmz ] Bonjour,J'ai une appli avec 1 fenetre principale et la console qui me sert de "trace".Tout marche bien, j'écris plein de chose en couleurs dans ma con Récuperer un hwnd de fenêtre [ par andros ] Bonjour,Je n'ai pas trouvé la réponse sur le forum au pb que voici :(ss Bor C++6) -d'une part j'ai un programme éxécutable en mode console Dos.-d'autr


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.