Jeu du pendu !!!! version simplifiée et facile

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 991 fois - Téléchargée 20 fois

Contenu du snippet

Le celebre jeu du pendu. En version tres simplifiée vraiment pour les vrais debutants en C !
Rejouissez vous !!

Source / Exemple :


#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>

// Declaration des procedures du bonhomme pendu et fonction Random
   void pendu1() ;
   void pendu6() ;
   void pendu5() ;
   void pendu4() ;
   void pendu3() ;
   void pendu2() ;
   int nbAleatoire (int min, int max) ;
   int main() {
       char liste[][30]={"abolir","ablution","bachot","balise","cabine","camphre","debit","decorum","echoir","egouts","famine","fantoche","gazeux","granite","hiatus","hideux","ignoble","iguane","rejouir","jongler","kaolin","kiosque","lezard","linotype","malice","mastiquer","nymphe","nickel","orage","optique","oraison","parution","pendu","quartz","quater","rayon","rapide","scenario","scolaire","tacher","terminus","univers","urbanisme","vestibule","violent","wagon","water-polo","xelophone","yard","yen","zenith","zephyr"} ;
       char mask[][30]= {"ab____","a______n","b__h__","b__i__","c_b___","___ph__","d____","d_____m","_c___r","_go___","f_i__","f____c__","g____x","g___i__","h_a___","h____x","i_____e","ig____","__j___r","j__g___","k___i_","k_____e","l____d","l____y__","m__i__","m____q___","n___h_","n__k__","o__g_","_p__q__","o_a____","p______n","p___u","q_a___","q____r","r_y__","r_p___","_c__a___","s___a___","t__h__","t_r_____","u__v___","_rb______","v__t_____","v__l__","w____","_a___-p___","x_____o__","_ar_","___","z__i__","z___y_"} ;
       char c,nom[20] ;
       int i,cpt,mot,essai,cpt1 ;
       srand(time(NULL)) ;
       mot=nbAleatoire(0,51) ;
       printf("Donnez votre nom tout d'abord\n") ;
       gets(nom) ; 
       system("CLS") ;
       c=strlen(liste[mot]) ;
//Calcul du nombre de lettres cachées dans le mot 
       for(i=0,cpt=1;mask[mot][i]!='\0' ; i++){
                                     if(mask[mot][i]=='_'){
                                                           cpt++ ;
                                                           }
                                     }
//Debut du jeu
       printf("\t\tBIENVENUE << %s >> dans le jeu le PENDU !!\n\tVous avez droit a 6 erreurs pour trouver le mot cach\x82 \n\t\t\tBONNE CHANCE...\n\n",nom);
       puts(mask[mot]) ;
       essai=0 ;
       do{
       if(cpt>0 && essai<=5){
       printf("Donnez une lettre\t ") ;
       c=getch() ;
       printf("%c\n",c) ;
// cpt1 : Variable a partir de laquelle on pourra savoir si la lettre est valide ( si cpt est decrementé ou pas )  
       cpt1=cpt ; 
       for(i=0;liste[mot][i]!='\0';i++){
                                        if(liste[mot][i]==c && mask[mot][i]=='_'){
                                                             mask[mot][i]=c ;
                                                             cpt-- ;
                                                             }
       
                                        }
// Si la variable cpt à varier alors : selon le nombre d'essais restant
        if(cpt1==cpt && essai!=6){
                     essai=essai+1 ;
                     printf("\n\nAttention : La lettre \"%c\" n'existe pas parmi les lettres cach\x82s\nIl vous reste %d erreurs : Profitez en bien ...\n\n",c,6-essai) ;
                     switch (essai){
                            case 1 : pendu1() ; break ;
                            case 2 : pendu2() ; break ;
                            case 3 : pendu3() ; break ;
                            case 4 : pendu4() ; break ;
                            case 5 : pendu5() ; break ;
                            case 6 : pendu6() ; break ;
                            default : ;
                            }
                     }
       puts(mask[mot]) ;
       }
       }while(cpt>1 && essai<=5) ;
// Si le mot est trouvé
       if (cpt && essai<=5){
       printf("\n\nBravo !!! Maintenant vous meritez votre vie %s !!! Fantastique...\nLe mot \x82tait bien \"%s\"",nom,liste[mot]) ;
       }
// Sinon
       else if(cpt=0 || essai>=6){
            printf("\nD\x82sol\x82 %s ... Faites vos dernieres prieres... Vous serez pendu hahahahaha!!!",nom) ;
            }
            
       getch() ;
       return 0 ;
   }
       
       
     int nbAleatoire (int min, int max){
          int nbAl ;
          nbAl=rand()%(max + 1) + min ;
          return nbAl ;
          }  
   void pendu6(){  
       printf(" _\n") ;
       printf("|_|\n") ;
       printf("_|_\n") ;
       printf(" |\n") ;
       printf("/ \\\n") ;   
}

  void pendu5(){
       printf(" _\n") ;
       printf("|_|\n") ;
       printf("_|_\n") ;
       printf(" |\n") ;
       printf("/ \n") ;   
       }
     
  void pendu4(){
       printf(" _\n") ;
       printf("|_|\n") ;
       printf("_|_\n") ;
       printf(" |\n\n") ;
       }
       
       
  void pendu2(){
       printf(" _\n") ;
       printf("|_|\n") ;
       printf(" |\n\n") ;
       }
       
  void pendu3() {
       printf(" _\n") ;
       printf("|_|\n") ;
       printf(" |\n |\n\n") ;
       }
       
  void pendu1(){
       printf(" _\n") ;
       printf("|_|\n\n") ;
       }

A voir également

Ajouter un commentaire Commentaires

classs c nikel
Messages postés
9
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
8 mai 2010

Bonjour malgré les avis des autres je trouve qu'il est pas mal, cella dit j'aurais une question:

pourquoi avez vous utilisé ça:
ligne 24
system("CLS") ;

a t'il une utilité particulière?
Messages postés
25
Date d'inscription
vendredi 12 février 2010
Statut
Membre
Dernière intervention
20 juin 2011

Idem avec les 2 autres commentaires, mais je serais moins sévere alors je te met:

note = 3.5 / 2 * 4 + 8 - ( - 4 + 4 ) - 7 - 1;
Messages postés
1
Date d'inscription
dimanche 12 novembre 2006
Statut
Membre
Dernière intervention
22 mars 2010

D'accord avec Sangoshi, je ne trouve pas que ce soit une manière simple de coder le pendu...
Pour moi le jeu n'est pas souple du tout...
Néanmoins, l'interaction est sympathique et le dessin du pendu marrant.
Une petite erreur technique au passage :
int nbAleatoire (int min, int max){
return min + rand()%(max - min + 1);
}
Bon courage pour la suite :)
PS : un petit effort sur l'indentation, peut-être ?
Messages postés
8
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
22 février 2009

points négatifs :
Désolé mais je ne trouve pas que cette manière de coder un pendu sois simple ! De plus de multiple amélioration peuvent être effectuées, (par exemple : nous donner le mot a trouver si on ne le trouve pas)...

Voici un code source beaucoup plus simple avec un meilleur résultat : http://www.siteduzero.com/tutoriel-3-14071-tp-realisation-d-un-pendu.html

Points Positifs :
Malgré tout ce que je viens de dire ton pendu marche ce qui est le principale ;)

On peu noter un effort de scénario, on a pas l'impression de jouer avec une vulgaire machine.

Conclusion :
Je te mets donc une note de 9/20 (je sais que je ne peut mettre que 4/10 ou 5/10 je vais donc indiquer 5/10 pour t'encourager)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.