begin process at 2012 02 09 15:23:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > THE HANGED

THE HANGED


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :2 677 / 93

Auteur : onacluv

Ecrire un message privé
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

Les Membres Club peuvent 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.

 Sources de la même categorie

Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79
Source avec Zip AUTRE GRILLE DE SUDOKU par Eneur
Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip CARNET D'ADRESSE MODE CONSOLE par chikusa
Source avec Zip SNAKE CONSOLE par fboivin63
Source avec Zip Source avec une capture SNAKE CONSOLE par Maxou1012
Source avec Zip Source avec une capture BEJEWELED EN C par marven23

Commentaires et avis

Commentaire de onacluv le 09/06/2008 13:40:28

Aucun conseil à apporter ?

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...

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.

++

Commentaire de Spoolega le 09/06/2008 23:57:32

absolument pas*

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 :) !

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 !  :)

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...

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+

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 !  :)

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.

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.  :]

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 !

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).

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");
# }

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

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.

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+
  

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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 14,087 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales