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 :

Jeu du Motus


Sujet :

C

  1. #1
    Candidat au Club
    Jeu du Motus
    Bonjour,
    Pour les cours on nous a demandé d'effectuer un programme en langage C je dois faire un programme du jeu du motus en langage C. Le problème c'est que je ne sais pas comment faire pour sélectionner des mots de 8 lettres aux hasard. Je suis sur CodeBlocks.
    Pouvait vous m'aider s'il vous plaît?

  2. #2
    Expert confirmé
    Bonjour.

    Comme idée tu pourrais avoir un fichier contenant une liste de mots. Tu charges ensuite ces mots dans un tableau. Tu peux par exemple copier ces mots ici. Si tu ne maîtrises par la gestion des fichiers tu peux tout aussi bien créer un tableau de char* qui contiendra ces mots.

    Une fois ton tableau initialisé, tu peux comparer l'entrée de l'utilisateur avec ton tableau.

    Voila pour les principes.
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  3. #3
    Candidat au Club
    Comment fait on pour charger les mots dans un tableau?

  4. #4
    Expert éminent
    Tu peux aussi passer par une base de données SQLite qui est une bibliothèque C, mais qui va demander un peu de code et déjà au moins un layer de communication entre le code et la BDD

    Et pour illustrer les propos de @gerald3d , un code sûrement pas parfait mais qui donne l'idée. Je pense notamment au fait qu'en C, un tableau [] passé en paramètre est dégradé en pointeur et donc on ne peut plus calculer sa taille - il faut passer également sa taille en paramètre.
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    #define WORD_LENGTH 8
     
    char* dictionnary[] = {
        "concassa",
        "monacale",
        "douvains",
        "corvette",
        "embrasez",
        "ouillant",
        "entrefer",
        "violiers",
        "dissocie",
        "obligent",
        "pointure",
        "rampante",
        "cruciale",
        "ribosome",
        "zuchette",
        "goberait",
        "coudriez",
        "effrayez",
        "daigniez",
        "rimaient",
        "admirera",
        "diminues",
        "huitaine",
        "influera",
        "dodinent",
        "accordas",
        "pesettes",
        "hurleuse",
        "spatiaux",
        "filoutas",
        "sertirai",
        "nettoyer",
        "touerait",
        "exaltais",
        "cabanons",
        "baiserez",
        "redevras",
        "faunique",
        "atonique",
        "tuyautas",
        "cabossas",
        "formages",
        "caressas",
        "perchmen",
        "sauriras",
        "carrelet",
        "ensiliez",
        "viellent",
        "taxeriez",
        "agrandir",
        "indivise",
        "tanguais",
        "affluent",
        "triballa",
        "fricotez",
        "malpolis",
        "chuintai",
        "nourrain",
        "composes",
        "camperai",
        "naviguer",
        "nagerons",
        "laotiens",
        "bouclons",
        "calquant",
        "proviens",
        "poivrote"
    };
     
     
    int main(int argc, char** argv)
    {
        size_t count, nb_words;
     
        srand( time(NULL) );
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));
     
        printf("main - debug : size dictionnary : %lu\n", nb_words);
     
        for(count=0; count < 6; ++count){
            printf ("One word : %s\n", dictionnary[ (rand() % nb_words)] );
        }
     
     
        return EXIT_SUCCESS;
    }

  5. #5
    Candidat au Club
    Que signifie cette partie du 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
    int main(int argc, char** argv)
    {
        size_t count, nb_words;
     
        srand( time(NULL) );
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));
     
        printf("main - debug : size dictionnary : %lu\n", nb_words);
     
        for(count=0; count < 6; ++count){
            printf ("One word : %s\n", dictionnary[ (rand() % nb_words)] );
        }
     
     
        return EXIT_SUCCESS;
    }


    Pour l'instant j'ai fait ça :

    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
    //DIRECTIVES DE COMPILATION :
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    #include<conio.h>// Pour pouvoir changer les couleurs.
     
    int main (void)
    {
        //déclaration de variable
        void saisiemot(char*mot,int i);
        int regledujeu(void);
        char pmot[8];
        char mot;
        int a;
        int i;
        int h;
        int n;
        int choix;
        void motordinateur(void);
        do//pour recommencer.
        {
     
            do//pour les 8 coup compteur de coup.
            {
    // début du jeu.
                for (n=0; n<=8; n=n+1)
                {
                    printf(" \n\t Jeu du Motus ");
                    a = regledujeu();//affichage des règles du jeu.
                    h = 8-n;
                    printf("\n Il vous reste %d coup",h);
                    saisiemot(&pmot[0],i);
                    motordinateur;
                }
            }
            while (n<8);//pour les 8 coups
     
            printf("\n\n Si vous voulez rejouer tapez 1 sinon tapez autre chose.");
            scanf("%d",&choix);
            printf("%d",choix);
     
     
        }
        while (choix==1);//pour recommencer
     
        return 0;
    }
    void saisiemot(char*mot,int i)
    {
     
        printf("\n\n entree le mot de 8 lettres, lettre par lettre.");
     
        for (i=0; i<8; i=i+1)
        {
            printf("\n pmot[%d]=",i);
            scanf(" %c",(mot+i));//pour entrée la lettre
            printf("%c",*(mot+i));//pour afficher la lettre précédement entrée dans le scanf
     
        }
    }
     
    int regledujeu(void)
    {
        printf("\n\n Le jeu du motus consiste a trouver un mots de 8 lettres en un maximum de 8 coup.\n Dans un premier temps vous allez devoir essayer de retrouver le mot que l'ordinateur a selectionner.");
     
        return 0 ;
    }

  6. #6
    Expert éminent
    Citation Envoyé par jeumotus Voir le message
    Que signifie cette partie du code ?
    Tu es sérieux
    Commence par lire au moins le premier tutoriel C ... ou bien commence par l'algorithmie parce que tu sembles n'avoir jamais vu 1 ligne de code de ta vie

    • C'est du code C
    • C'est la fameuse fonction main
    • C'est le point de départ de ton programme
    • la réponse D

  7. #7
    Candidat au Club
    Oui je suis sérieux, on a déjà fait le langage C en cours. Donc ce n'est pas la première fois que j'en vois même si on n'en a pas beaucoup fait. Et il y a beaucoup de chose que l'on nous a pas explique et qu'il ne nous expliquerons pas ou au moins avant qu'on rende ces projets.

    La fonction main ça va le problème est plutôt ce qu'il y a à l'intérieur des parenthèse (int argc, char** argv) que je ne comprends pas.

    Ensuite je comprends pas ce que signifie cette partie, je connais les printf, les for et les return, mais je ne comprends pas le reste

    qu'est-ce que :
    • rand()
    • srand( time(NULL) );
    • sizeof
    • size_t count, nb_words;


    je n'ai pas compris pourquoi il y a cette divsion nb_words = (sizeof(dictionnary) / sizeof(char*));.

    pourquoi %lu dans le printf ?

    dans le for que signifie ++count ?

    Et enfin pourquoi il y a EXIT_SUCCESS dans le return ?

  8. #8
    Expert éminent
    Donc il y a énormément de pain sur la planche

    Citation Envoyé par jeumotus Voir le message
    La fonction main ça va le problème est plutôt ce qu'il y a à l'intérieur des parenthèse (int argc, char** argv) que je ne comprends pas.
    C'est la vraie signature de la fonction main ... quoique sous linux tu as un 3ième argument
    • argc est le nombre d'arguments (argument count) : par défaut, il y en a 1
    • argv est un tableau contenant les arguments sous forme chaîne de caractères (argument values) : par défaut, le premier est toujours le programme avec son chemin


    Par exemple , si tu lances ton programme:
    • "main.exe" : argc vaut 1 et argv ["chemin/main.exe"]
    • "main.exe --verbose" : argc vaut 2 et argv ["chemin/main.exe", "--verbose"]
    • "main.exe --verbose -n 2" : argc vaut 4 et argv ["chemin/main.exe", "--verbose", "-n", "2"]



    Citation Envoyé par jeumotus Voir le message
    Ensuite je comprends pas ce que signifie cette partie, je connais les printf, les for et les return, mais je ne comprends pas le reste
    • rand()
    • srand( time(NULL) );
    Recherche sur les Internets les fonctions que tu ne connais pas Documentation de la fonction rand et de la fonction srand (<- liens en anglais)


    Citation Envoyé par jeumotus Voir le message
    size_t
    C'est un type de base du langage C depuis la norme C99 qui correspond à un entier non signé/ positif. Il est utilisé partout dans la bibliothèque C essentiellement pour manipuler des tailles.


    Citation Envoyé par jeumotus Voir le message
    sizeof
    C'est lié aux pointeurs (que tu ne sembles pas avoir vu) c'est une fonction/ opérateur du langage C pour calculer la taille en octets d'une variable.


    Citation Envoyé par jeumotus Voir le message
    je n'ai pas compris pourquoi il y a cette divsion nb_words = (sizeof(dictionnary) / sizeof(char*));
    C'est lié à la mémoire (que tu ne sembles pas avoir vu) ton tableau à un stockage mémoire contiguë et va stocker un nombre indéterminée de mots (<- as-tu remarqué que dans ma déclaration je n'ai pas précisé de taille à mon dictionnaire ?)
    Par conséquent si tu divises sa taille par la taille d'un pointeur (parce que mon dictionnaire est un tableau de pointeurs), tu as le nombre de mots contenus dans ton dictionnaire.


    Citation Envoyé par jeumotus Voir le message
    pourquoi %lu dans le printf ?
    Documentation de la fonction printf (<- lien en anglais)
    Mais je te l'accorde le format devrait être %z.


    Citation Envoyé par jeumotus Voir le message
    dans le for que signifie ++count ?
    C'est une post-incrémentation (que tu ne sembles pas avoir vu) qui peut donner un résultat différent d'une pré-incrémentation.
    Dans mon cas d'utilisation , c'est plus une petite optimisation mais je ne t'en dis pas plus, c'est assez technique.


    Citation Envoyé par jeumotus Voir le message
    Et enfin pourquoi il y a EXIT_SUCCESS dans le return ?
    Documentation de la macro EXIT_SUCCESS et de la macro EXIT_FAILURE (<- liens en anglais)
    La fonction main doit retourner un entier (code d'erreur) pour dire si le programme s'est bien exécuté ou pas et la signification de ce retour dépend de chaque système d'exploitation.
    Mais presque tout le monde est d'accord : 0 veut dire "cela s'est bien passé".
    Les macros EXIT_SUCCESS et EXIT_FAILURE permettent de faire du code propre et d'être en théorie indépendant de la gestion de chaque système d'exploitation de ce code d'erreur.

  9. #9
    Candidat au Club
    Merci de ta réponse effectivement j'ai de quoi travailler.
    J'ai essayer de mettre sur Code Blocks ton programme pour voir ce qu'il en sortait et j'ai eu un problème de compilation sur la ligne de la division qui sert a obtenir le nombre de mots dans le dictionnaire.

    j'ai mis ça :

    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
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    #include<time.h>
    int main(int argc, char** argv)
    {
        size_t count, nb_words;
     
        srand( time(NULL) );
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));
     
        printf("main - debug : size dictionnary : %lu\n", nb_words);
     
        for(count=0; count < 6; ++count){
            printf ("One word : %s\n", dictionnary[ (rand() % nb_words)] );
        }
     
     
        return EXIT_SUCCESS;
    }

  10. #10
    Expert éminent
    Citation Envoyé par jeumotus Voir le message
    j'ai eu un problème de compilation sur la ligne de la division qui sert a obtenir le nombre de mots dans le dictionnaire.
    le code n'est pas complet et il manque le dictionnaire

  11. #11
    Candidat au Club
    Citation Envoyé par foetus Voir le message
    le code n'est pas complet et il manque le dictionnaire
    Ok Merci je reprendrai ça demain.

  12. #12
    Candidat au Club
    Citation Envoyé par foetus Voir le message
    le code n'est pas complet et il manque le dictionnaire
    Merci cela m'a bien aidé maintenant j'ai un mot aux hasard Mais j'ai un autre problème je ne sais pas comment comparer le mot de l'utilisateur et celui de sélectionner aux hasard

  13. #13
    Expert éminent
    Citation Envoyé par jeumotus Voir le message
    Mais j'ai un autre problème je ne sais pas comment comparer le mot de l'utilisateur et celui de sélectionner aux hasard
    Lorsqu'on ne sait pas , on commence par chercher dans la librairie standard du C (<- lien cplusplus en anglais)
    Attention pour les #include les noms de entêtes ne commencent pas par c et ont l'extension ".h" - ce sont des entêtes C++
    • entête C : stdint.h, stdio.h, stdlib.h, string.h, time.h
    • entête C++ : cstdint, cstdio, cstdlib, cstring, ctime


    Ensuite, les chaînes de caractères sont un sujet qui demande de l'apprentissage parce qu'il y a différents encodages : ASCII, MBCS, Unicode - UTF-8, UTF-16, UTF-32
    De plus en C , les chaînes de caractères n'existent pas vraiment : c'est un tableau de caractères (encodage ASCII) avec une sentinelle - le fameux caractère '\0' (<- lien wiki en français)
    Et qui dit tableau dit pointeur.

    donc encore plus de pain sur la planche

  14. #14
    Candidat au Club
    chercher dans la librairie standard du C (<- lien cplusplus en anglais)

    Suite a vos bon conseil j' ai été voir les liens et j'ai obtenue le programme ci dessous mais il ne marche pas comme je l'aurai souhaiter Pouvez vous m'aidez a trouvé et a comprendre mon erreur, s'il vous plaît Voici le programme :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    //DIRECTIVES DE COMPILATION :
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    #include<conio.h>// Pour pouvoir changer les couleurs.
    #include <time.h>
     
    int main (void)
    {
        //déclaration de variable
        void saisiemot(char*mot,int i);
        int regledujeu(void);
        int motordi(int argc, char* argv);
        int comparechaine (char *pmot[0]);
        char pmot[8];
        int argc;
        char* argv;
        char mot;
        int a;
        int b;
        int i;
        int h;
        int n;
        int choix;
        void motordinateur(void);
        do//pour recommencer.
        {
     
            do//pour les 8 coup compteur de coup.
            {
    // début du jeu.
                for (n=0; n<=8; n=n+1)
                {
                    printf(" \n\t Jeu du Motus ");
                    a = regledujeu();//affichage des règles du jeu.
                    h = 8-n;
                    printf("\n Il vous reste %d coup",h);
     
                    saisiemot(&pmot[0],i);
                    motordi(argc,* argv);
                    comparechaine(&pmot[0]);
                }
     
            }
            while (n<8);//pour les 8 coups
     
            printf("\n\n Si vous voulez rejouer tapez 1 sinon tapez autre chose.");
            scanf("%d",&choix);
            printf("%d",choix);
     
     
        }
        while (choix==1);//pour recommencer
     
        return 0;
    }
    void saisiemot(char*mot,int i)
    {
     
        printf("\n\n entree le mot de 8 lettres, lettre par lettre.");
     
        for (i=0; i<8; i=i+1)
        {
            printf("\n pmot[%d]=",i);
            scanf(" %c",(mot+i));//pour entrée la lettre
            printf("%c",*(mot+i));//pour afficher la lettre précédement entrée dans le scanf
     
        }
    }
     
    int regledujeu(void)
    {
        printf("\n\n Le jeu du motus consiste a trouver un mots de 8 lettres en un maximum de 8 coup.\n Vous allez devoir essayer de retrouver le mot que l'ordinateur a selectionner. \n ATTENTION tous les mots sont ecrit en miniscule et ils ne contiennet pas de caracteres speciaux.");
     
        return 0 ;
    }
     
    char* dictionnary[] =
    {
        "admirera",
        "accordas",
        "atonique",
        "agrandir",
        "affluent",
        "bouclons",
        "babioles",
        "concassa",
        "corvette",
        "cruciale",
        "calquant",
        "cabanons",
        "coudriez",
        "cabossas",
        "caressas",
        "carrelet",
        "composes",
        "camperai",
        "dissocie",
        "diminues",
        "dodinent",
        "entrefer",
        "exaltais",
        "effrayez",
        "ensiliez",
        "faunique",
        "fromages",
        "goberait",
        "gabaries",
        "huitaine",
        "hurleuse",
        "influera",
        "importer",
        "japonais",
        "jambelet",
        "kanienne",
        "kakemono",
        "laotiens",
        "lamentes",
        "malpolis",
        "machette"
        "nettoyer",
        "naviguer",
        "nagerons",
        "ouillant",
        "obligent",
        "proviens",
        "poivrote",
        "pointure",
        "pesettes",
        "qualifie",
        "quotient",
        "redevras",
        "rampante",
        "ribosome",
        "rimaient",
        "spatiaux",
        "sertirai",
        "souriras",
        "tuyautas",
        "touerait",
        "taxeriez",
        "tanguais",
        "urologie",
        "unifiant",
        "voiliers",
        "veillent",
        "wishbone",
        "whipcord",
        "xanthine",
        "xylocope",
        "yearling",
        "yeomanry",
        "zincique",
        "zoologie",
     
    };
     
    int motordi(int argc, char* argv)
    {
     
        size_t count, nb_words;
     
        srand( time(NULL) );
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));//sers a determiner la taille du dictionnaire
     
        printf ("\n Le mots etait : %s\n", dictionnary[ (rand() % nb_words)] );
     
        return EXIT_SUCCESS;
    }
     
    int comparechaine (char *pmot[0])
    {
        int n;
        int nb_words;
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));//sers a determiner la taille du dictionnaire
     
        for (n=0 ; n<8 ; n = n+1)
        {
            if (strncmp (dictionnary[ (rand() % nb_words)],&pmot[0],2) == 0)
            {
                printf ("vert %s\n",&pmot[n]);
            }
            else
            {
                printf ("rouge %s\n",&pmot[n]);
            }
        }
     
        return 0;
    }

  15. #15
    Candidat au Club
    Citation Envoyé par foetus Voir le message
    Lorsqu'on ne sait pas , on commence par chercher dans la librairie standard du C (<- lien cplusplus en anglais)
    Attention pour les #include les noms de entêtes ne commencent pas par c et ont l'extension ".h" - ce sont des entêtes C++
    • entête C : stdint.h, stdio.h, stdlib.h, string.h, time.h
    • entête C++ : cstdint, cstdio, cstdlib, cstring, ctime


    Ensuite, les chaînes de caractères sont un sujet qui demande de l'apprentissage parce qu'il y a différents encodages : ASCII, MBCS, Unicode - UTF-8, UTF-16, UTF-32
    De plus en C , les chaînes de caractères n'existent pas vraiment : c'est un tableau de caractères (encodage ASCII) avec une sentinelle - le fameux caractère '\0' (<- lien wiki en français)
    Et qui dit tableau dit pointeur.

    donc encore plus de pain sur la planche

    Suite a vos bon conseil j' ai été voir les liens et j'ai obtenue le programme ci dessous mais il ne marche pas comme je l'aurai souhaiter Pouvez vous m'aidez a trouvé et a comprendre mon erreur, s'il vous plaît Voici le programme :
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
     
     
    //DIRECTIVES DE COMPILATION :
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    #include<conio.h>// Pour pouvoir changer les couleurs.
    #include <time.h>
     
    int main (void)
    {
        //déclaration de variable
        void saisiemot(char*mot,int i);
        int regledujeu(void);
        int motordi(int argc, char* argv);
        int comparechaine (char *pmot[0]);
        char pmot[8];
        int argc;
        char* argv;
        char mot;
        int a;
        int b;
        int i;
        int h;
        int n;
        int choix;
        void motordinateur(void);
        do//pour recommencer.
        {
     
            do//pour les 8 coup compteur de coup.
            {
    // début du jeu.
                for (n=0; n<=8; n=n+1)
                {
                    printf(" \n\t Jeu du Motus ");
                    a = regledujeu();//affichage des règles du jeu.
                    h = 8-n;
                    printf("\n Il vous reste %d coup",h);
     
                    saisiemot(&pmot[0],i);
                    motordi(argc,* argv);
                    comparechaine(&pmot[0]);
                }
     
            }
            while (n<8);//pour les 8 coups
     
            printf("\n\n Si vous voulez rejouer tapez 1 sinon tapez autre chose.");
            scanf("%d",&choix);
            printf("%d",choix);
     
     
        }
        while (choix==1);//pour recommencer
     
        return 0;
    }
    void saisiemot(char*mot,int i)
    {
     
        printf("\n\n entree le mot de 8 lettres, lettre par lettre.");
     
        for (i=0; i<8; i=i+1)
        {
            printf("\n pmot[%d]=",i);
            scanf(" %c",(mot+i));//pour entrée la lettre
            printf("%c",*(mot+i));//pour afficher la lettre précédement entrée dans le scanf
     
        }
    }
     
    int regledujeu(void)
    {
        printf("\n\n Le jeu du motus consiste a trouver un mots de 8 lettres en un maximum de 8 coup.\n Vous allez devoir essayer de retrouver le mot que l'ordinateur a selectionner. \n ATTENTION tous les mots sont ecrit en miniscule et ils ne contiennet pas de caracteres speciaux.");
     
        return 0 ;
    }
     
    char* dictionnary[] =
    {
        "admirera",
        "accordas",
        "atonique",
        "agrandir",
        "affluent",
        "bouclons",
        "babioles",
        "concassa",
        "corvette",
        "cruciale",
        "calquant",
        "cabanons",
        "coudriez",
        "cabossas",
        "caressas",
        "carrelet",
        "composes",
        "camperai",
        "dissocie",
        "diminues",
        "dodinent",
        "entrefer",
        "exaltais",
        "effrayez",
        "ensiliez",
        "faunique",
        "fromages",
        "goberait",
        "gabaries",
        "huitaine",
        "hurleuse",
        "influera",
        "importer",
        "japonais",
        "jambelet",
        "kanienne",
        "kakemono",
        "laotiens",
        "lamentes",
        "malpolis",
        "machette"
        "nettoyer",
        "naviguer",
        "nagerons",
        "ouillant",
        "obligent",
        "proviens",
        "poivrote",
        "pointure",
        "pesettes",
        "qualifie",
        "quotient",
        "redevras",
        "rampante",
        "ribosome",
        "rimaient",
        "spatiaux",
        "sertirai",
        "souriras",
        "tuyautas",
        "touerait",
        "taxeriez",
        "tanguais",
        "urologie",
        "unifiant",
        "voiliers",
        "veillent",
        "wishbone",
        "whipcord",
        "xanthine",
        "xylocope",
        "yearling",
        "yeomanry",
        "zincique",
        "zoologie",
     
    };
     
    int motordi(int argc, char* argv)
    {
     
        size_t count, nb_words;
     
        srand( time(NULL) );
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));//sers a determiner la taille du dictionnaire
     
        printf ("\n Le mots etait : %s\n", dictionnary[ (rand() % nb_words)] );
     
        return EXIT_SUCCESS;
    }
     
    int comparechaine (char *pmot[0])
    {
        int n;
        int nb_words;
     
        nb_words = (sizeof(dictionnary) / sizeof(char*));//sers a determiner la taille du dictionnaire
     
        for (n=0 ; n<8 ; n = n+1)
        {
            if (strncmp (dictionnary[ (rand() % nb_words)],&pmot[0],2) == 0)
            {
                printf ("vert %s\n",&pmot[n]);
            }
            else
            {
                printf ("rouge %s\n",&pmot[n]);
            }
        }
     
        return 0;
    }

###raw>template_hook.ano_emploi###