Bonjour,

Je suis entrain de programmer le Jeu du Pendu et j'ai un problème que je n'arrive pas à résoudre.

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
 
 
#ifndef CARACTERE_H_INCLUDED
#define CARACTERE_H_INCLUDED
 
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*/
 
}
 
char RemplaceCaractere(char mot_secret[], char trouve[], char caractere, int i, int long_mot)
{
    int j=0;
 
    for(j=0;j<long_mot;j++)
    {
        if((j<i) || (j>i))
        {
            if(trouve[j]!=mot_secret[j]) /* Si on a trouve une lettre on ne le remplace pas par une * */
                trouve[j]='*';
        }
        else
            trouve[i]=caractere;
    }
 
    return trouve[i];
}
 
#endif // CARACTERE_H_INCLUDED
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
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "caractere.h"
 
int main()
{
    char mot_secret[]="MARSEILLE";
    char *trouve;
    char caractere="";
    int long_mot=strlen(mot_secret);
    int i=0;
    trouve=malloc(long_mot*sizeof(char));
 
    printf("                      ********************************\n");
    printf("                      **********JEU DU PENDU**********\n");
    printf("                      ********************************\n\n\n");
 
    for(i=0;i<long_mot;i++)
        trouve[i]='*';
 
    do
    {
        printf("Quelle est le mot secret? : %s \n",trouve);
        printf("Proposez une lettre: ");
        caractere=LireCaractere();
        for(i=0;i<long_mot;i++)
        {
            if(caractere==mot_secret[i])
                trouve[i]=RemplaceCaractere(mot_secret, trouve, caractere, i, long_mot);
        }
        printf("%s\n\n",trouve);
 
    }
    while(strcmp(trouve,mot_secret)!=0);
 
 
    return 0;
}

Mon problème c'est que si le mot secret a une a un nombre de caractères différents de 3 , 5 ou 7
j'ai par exemple pour le mot MARRON ( 6 caractères) ******µ(pas forcement µ), pour MARSEILLE(9 caractères) *********HDK£µ(pas forcement ces caractères)

Pouvez-vous m'aider?

Merci d'avance