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 :

Jeu du Motus


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut 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é
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    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.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Comment fait on pour charger les mots dans un tableau?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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 sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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 sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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 sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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 sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    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;
    }

Discussions similaires

  1. Programmation du jeu Motus
    Par SimonInsa67 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 07/01/2019, 14h52
  2. Jeu de motus
    Par Rahma_jr dans le forum Débuter
    Réponses: 1
    Dernier message: 21/12/2017, 16h53
  3. jeu motus en c
    Par sa7lia1990 dans le forum C
    Réponses: 10
    Dernier message: 06/03/2013, 03h23
  4. jeu motus partie jeu ne se lance pas
    Par janyoura dans le forum SDL
    Réponses: 2
    Dernier message: 25/04/2012, 16h38
  5. Jeu motus: affichage de mot tapé
    Par janyoura dans le forum SDL
    Réponses: 13
    Dernier message: 11/04/2012, 17h50

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