IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Un jeu de pendu


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Par défaut Un jeu de pendu
    Bonjour,

    J'ai commncé l'apprentissage du langage C,

    et j'aimerais programmer un petit jeu du pendu...

    Seulement j'ai un petit problème (non, c'est vrai ?!?)...

    Le mot que le joueur recherche est caché par des étoiles *...

    Et lorsque le joueur entre une lettre au moyen d'une fonction "maison", je ne sais pas comment faire pour remplacer l'étoile correspondant à la lettre, si toutefois celle-ci se trouve bien dans le mot...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
     
    char lireCaractere();
     
    int main(int argc, char *argv[])
    {
    	long nombreCoups = 10;
    	char motMystere[] = "ROUGE";
    	long nombreCaracteres = 0;
    	long i = 0;	
    	char caractereEntre = "";
     
    	printf("Bienvenue dans le pendu\n\n");
    	do
    	{
    		i = 0;
    		printf("Il vous reste %ld coups a jouer\n", nombreCoups);
    		nombreCaracteres = strlen(motMystere);
    		printf("Quel est le mot cache : ");
    		do
    		{
    			printf("*");
    			i++;
    		} while(i != nombreCaracteres);
    		printf("\n");
    		printf("Proposez une lettre : ");
    		caractereEntre = lireCaractere();
     
    		if(strchr(motMystere, caractereEntre) == 0)
    		{
     
    			nombreCoups--;
    		}
     
    	} while(nombreCoups != 0);
     
    	system("PAUSE");      
    	return 0;
    }
     
    char lireCaractere() 
    { 
        char caractere = 0;
     
        caractere = getchar();
        caractere = toupper(caractere);
     
     
        while (getchar() != '\n') ;
     
        return caractere;
     
    }
    Je vous remercie d'avance,

    cordialement,
    jerrypeeren

    EDIT : je sais que le code n'est pas encore complet et qu'il peut encore être optimisé (par exemple lors de la déclaration des variables), mais je changerai tout ça quand le jeu fonctionnera complètement... L'optimisation, c'est pour après !

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jerrypeeren Voir le message
    Le mot que le joueur recherche est caché par des étoiles *...

    Et lorsque le joueur entre une lettre au moyen d'une fonction "maison", je ne sais pas comment faire pour remplacer l'étoile correspondant à la lettre, si toutefois celle-ci se trouve bien dans le mot...
    Il faut créer une chaine cachée avec des '*' de la même longueur que le mot a chercher.

    Quand on saisie une lettre, on cherche sa position (index) dans la chaine à trouver et si la lettre est trouvée, on remplace le '*' situé au même index dans la chaine cachée, par la lettre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Par défaut
    Merci beaucoup pour votre réponse,
    j'ai fait à peu près ce que vous m'avez dit, avec un peu d'aide, ça donne ceci, qui fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
     
    char lireCaractere();
    void trouverEtRemplacer(char motSecret[], char motTrouver[], char lettre, long nombreCaracteres);
     
    int main(int argc, char *argv[])
    {
    	long nombreCoups = 10;
    	char motMystere[] = "ROUGE";
    	long nombreCaracteres = 0;
    	long i = 0;
    	char caractereEntre;
    	char *motDecouvert;
    	printf("Bienvenue dans le pendu\n\n");
    	nombreCaracteres = strlen(motMystere);
    	   motDecouvert = (char *) malloc(nombreCaracteres * sizeof(char));
            for(i=0;i<nombreCaracteres;i++) motDecouvert[i]='*';
    	do
    	{
    		i = 0;
    		printf("Il vous reste %ld coups a jouer\n", nombreCoups);
     
    		printf("Quel est le mot cache : ");
     
            i=0;
    		do
    		{
    			printf("%c", motDecouvert[i]);
    			i++;
    		} while(i != nombreCaracteres);
    		printf("\n");
    		printf("Proposez une lettre : ");
    		caractereEntre = lireCaractere();
    		trouverEtRemplacer(motMystere, motDecouvert, caractereEntre, nombreCaracteres);
    		if(strchr(motMystere, caractereEntre) == 0)
    		{
     
    			nombreCoups--;
    		}
     
     
    	} while(nombreCoups != 0);
    	if (nombreCoups == 0)
    	{
    		printf("Vous avez perdu !!! Le mot mystere etait : %s\n", &motMystere);
    	}
    	system("PAUSE");
    	return 0;
    }
     
    char lireCaractere()
    {
        char caractere = 0;
     
        caractere = getchar(); // On lit le premier caractère
        caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà
     
        // On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)
        while (getchar() != '\n') ;
     
        return caractere; // On retourne le premier caractère qu'on a lu
     
    }
     
    void trouverEtRemplacer(char motSecret[], char motTrouver[], char lettre, long nombreCaracteres)
    {
        char caractereActuel;
        long i = 0;
     
        do
        {
            caractereActuel = motSecret[i];
     
            if(caractereActuel == lettre)
            {
                motTrouver[i] = motSecret[i];
            }
            i++;;
        }while(i!= nombreCaracteres);
    }
    voilà, "résolu"

    cordialement, jerrypeeren

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jerrypeeren Voir le message
    Merci beaucoup pour votre réponse,
    j'ai fait à peu près ce que vous m'avez dit, avec un peu d'aide, ça donne ceci, qui fonctionne parfaitement :
    Hé hé, j'adore cet exo...

    Ce n'est pas terminé. Tu as oublié de déterminer si on avait trouvé le mot correct.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 59
    Par défaut
    oui oui,
    je sais bien que je n'avais pas encore fais ça, mais maintenant, c'est chose faite...

    Le jeu de pendu est terminé, et fonctionne même avec un dictionnaire au format .txt qui contient tous les mots possibles...

    Merci beaucoup

Discussions similaires

  1. Code en bourne shell du jeu Le "PENDU"
    Par piment dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 20/07/2007, 14h17
  2. Jeu Bonhomme pendu
    Par yinyann86 dans le forum Delphi
    Réponses: 11
    Dernier message: 14/11/2006, 17h03
  3. Le jeu du pendu.
    Par giggs dans le forum C
    Réponses: 5
    Dernier message: 31/10/2006, 13h40
  4. jeu du pendu
    Par krachik dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2006, 12h48
  5. Réponses: 4
    Dernier message: 24/03/2006, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo