Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1448 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Version simplifiée du jeu de Mastermind

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Version simplifiée du jeu de Mastermind

n°1731845
Mathildeda
Posté le 14-05-2008 à 16:36:34  profilanswer
 

Bonjour,

 

Voilà on a un devoir à faire sur la création d'un jeu Mastermind, l'énoncé est le suivant :
Le jeu se présente sous la forme d'un plateau ayant 12 rangées de 5 trous pouvant accueillir des pions de numéros différents (1, 2, 3, 4, 5, 6, 7, 8) :
* L'ordinateur fabrique une combinaison secrète de 5 pions choisies parmis 8 numéros.
* L'utilisateur cherche par tatonnements succéssifs, à trouver la combinaison secrète. Après chaque essai, l'ordinateur donne 2 explications :
          * le nombre de pions bien choisies et bien placées. Pour cela il affiche le chiffre 2 à la position du numéros correcte.
          * le nombre de pions bien choisies mais mal placées. Pour cela il affiche le chiffre 1 à la position du numéros.
          * Sinon sur les autres pions il affiche 0.
12 essais maximum.

 

Voilà ce que j'ai fait :

Code :
  1. #include<stdio.h>
  2. #include<time.h>
  3. int gagne (int chiffretrouve[]);
  4. int rechercherchiffre(int a, int combinaison[], int chiffretrouve[]);
  5. int lirechiffre;
  6. int a, b;
  7. int main(){
  8.    srand(time(NULL));
  9.    int c = rand()%8;
  10.    int combinaison = '45738';
  11.    int chiffretrouve[5] = {0};
  12.    long couprestant = 12;
  13.    long i = 0;
  14.    return 0;
  15.  
  16. while (couprestant > 12 && !gagne(chiffretrouve))
  17. {
  18.      printf ("\n\n Quel est la combinaison? \n\n" );
  19.      for (i = 0; i < 5; i++)
  20.      {
  21.          if (chiffretrouve[i]);
  22.             printf("\n\n %i \n\n", combinaison[i]);
  23.          else
  24.               printf("\n\n 0 \n\n" );
  25.               }
  26. printf ("\n\n Entrez 5 chiffres entre 1 et 8 \n\n" );
  27. c = scanf ("%i", c);
  28. if (!recherchechiffre (c, combinaison, chiffretrouve))
  29. {
  30.                      couprestant --;
  31.                      }
  32. if (gagne(chiffretrouve))
  33.   printf("\n\n Gagné la combinaison était bien : %i \n\n", combinaison);
  34. else
  35.    printf("\n\n Perdu la combinaison était : %i \n\n", combinaison);
  36. return 0;
  37. }
  38. int gagne (int chiffretrouve[])
  39. {
  40.    long i = 0;
  41.    int joueurgagne = 1;
  42.    for (i = 0; i < 5; i++)
  43.    {
  44.        if (chiffretrouve[i] ==0)
  45.        joueurgagne = 0;
  46.        }
  47.    return joueurgagne;
  48. }
  49. int recherchechiffre (int c, int combinaison, int chiffretrouve[])
  50. {
  51.    long i = 0;
  52.    int bonchiffre = 0;
  53.    for (i = 0; combinaison[i] != 0; i++)
  54.    {
  55.        if (c == combinaison[i])
  56.        {
  57.             bonchiffre = 1;
  58.             chiffretrouve[i] = 1;
  59.        }
  60.    return bonchiffre;
  61. }
  62. return (rand()%(b-a)+a)
  63. }
 

//
Je n'arrive pas les pointeurs ainsi que mettre 2 et 1.
Merci

Message cité 1 fois
Message édité par Elmoricq le 14-05-2008 à 16:45:04
mood
Publicité
Posté le 14-05-2008 à 16:36:34  profilanswer
 

n°1731851
Elmoricq
Modérateur
Posté le 14-05-2008 à 16:40:47  profilanswer
 

Pas du C++, je déplace dans la sous-catégorie "C".

n°1732013
noamaq
Posté le 14-05-2008 à 23:31:22  profilanswer
 

Ah tiens c'est le même devoir que le mien !


Message édité par noamaq le 14-05-2008 à 23:33:02
n°1732039
Ace17
Posté le 15-05-2008 à 07:18:48  profilanswer
 


Mais pas de question claire, helas.

n°1866973
sean_scott​y
Posté le 28-03-2009 à 15:33:49  profilanswer
 

C bien ms essai unpeu un mode multijoueur controler par le tps.et tu me fais signe a wilbert_tsagueu@yahoo.fr. ca me casse la tete!

n°1868082
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-04-2009 à 08:54:34  profilanswer
 

sean_scotty a écrit :

C bien ms essai unpeu un mode multijoueur controler par le tps.et tu me fais signe a wilbert_tsagueu@yahoo.fr. ca me casse la tete!


Tu peux le refaire en français ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1868084
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-04-2009 à 08:56:47  profilanswer
 

Mathildeda a écrit :

Voilà ce que j'ai fait :  


Tu peux commencer par corriger ceci :  


 
-------------- Build: Debug in hello ---------------
 
Compiling: main.c
Linking console executable: bin\Debug\hello.exe
C:\dev\hello\main.c:7: warning: function declaration isn't a prototype
C:\dev\hello\main.c: In function `main':
C:\dev\hello\main.c:8: warning: implicit declaration of function `srand'
C:\dev\hello\main.c:9: warning: implicit declaration of function `rand'
C:\dev\hello\main.c:9: warning: ISO C90 forbids mixed declarations and code
C:\dev\hello\main.c:10:23: warning: character constant too long for its type
C:\dev\hello\main.c:21: warning: empty body in an if-statement
C:\dev\hello\main.c:22: error: subscripted value is neither array nor pointer
C:\dev\hello\main.c:23: error: syntax error before "else"
C:\dev\hello\main.c:27: warning: format argument is not a pointer (arg 2)
C:\dev\hello\main.c:28: warning: implicit declaration of function `recherchechiffre'
C:\dev\hello\main.c:39: warning: ISO C forbids nested functions
C:\dev\hello\main.c:48: warning: ISO C90 forbids mixed declarations and code
C:\dev\hello\main.c:50: warning: ISO C forbids nested functions
C:\dev\hello\main.c: In function `recherchechiffre':
C:\dev\hello\main.c:53: error: subscripted value is neither array nor pointer
C:\dev\hello\main.c:55: error: subscripted value is neither array nor pointer
C:\dev\hello\main.c:63: error: syntax error before '}' token
Process terminated with status 1 (0 minutes, 0 seconds)
5 errors, 11 warnings


Quelques corrections, et surtout, des commentaires :  

Code :
  1. /*
  2. Voilà on a un devoir à faire sur la création d'un jeu Mastermind, l'énoncé est
  3. le suivant :
  4. Le jeu se présente sous la forme d'un plateau ayant 12 rangées de 5 trous
  5. pouvant accueillir des pions de numéros différents (1, 2, 3, 4, 5, 6, 7, 8) :
  6. * L'ordinateur fabrique une combinaison secrète de 5 pions choisies parmis 8
  7.   numéros.
  8. * L'utilisateur cherche par tatonnements succéssifs, à trouver la combinaison
  9.   secrète. Après chaque essai, l'ordinateur donne 2 explications :
  10.           * le nombre de pions bien choisies et bien placées. Pour cela il
  11.             affiche le chiffre 2 à la position du numéros correcte.
  12.           * le nombre de pions bien choisies mais mal placées. Pour cela il
  13.             affiche le chiffre 1 à la position du numéros.
  14.           * Sinon sur les autres pions il affiche 0.
  15. 12 essais maximum.
  16. */
  17. #include<stdio.h>
  18. #include<time.h>
  19. /* -ed- ajoute */
  20. #include<stdlib.h>
  21. /* -ed- eviter les prototypes separes dans le meme ficiher source. Travailler
  22.         si la disposition du code. Les fonctions non exportéee sont 'static'.
  23. int gagne (int chiffretrouve[]);
  24. int rechercherchiffre (int a, int combinaison[], int chiffretrouve[]);
  25. */
  26. /* -ed- eviter les globales. Au moins les rendre 'static'  */
  27. static int lirechiffre;
  28. static int a, b;
  29. static int gagne (int chiffretrouve[])
  30. {
  31.    long i = 0;
  32.    int joueurgagne = 1;
  33.    for (i = 0; i < 5; i++)
  34.    {
  35.       if (chiffretrouve[i] == 0)
  36.          joueurgagne = 0;
  37.    }
  38.    return joueurgagne;
  39. }
  40. static int recherchechiffre (int c, int combinaison, int chiffretrouve[])
  41. {
  42.    long i = 0;
  43.    int bonchiffre = 0;
  44.    /* -ed- absurde. 'combinaison' n'est pas un tableau.
  45.       A corriger. Je ne sais pas ce que tu veux faire... */
  46.    for (i = 0; combinaison[i] != 0; i++)
  47.    {
  48.       if (c == combinaison[i])
  49.       {
  50.          bonchiffre = 1;
  51.          chiffretrouve[i] = 1;
  52.       }
  53.       return bonchiffre;
  54.    }
  55.    /* -ed- ajoute ';' */
  56.    return (rand () % (b - a) + a);
  57. }
  58. /* -ed- ajoute 'void' (pas de parametres) */
  59. int main (void)
  60. {
  61.    srand (time (NULL));
  62.    {
  63.       /* -ed- en C90, les variables doivent etre definies en debut de bloc */
  64.       int c = rand () % 8;
  65.       /* -ed-
  66.          int combinaison = '45738';
  67.          ceci n'a aucun sens. C'est soit
  68.          int combinaison = 45738;
  69.          soit plus vraisemblablement :
  70.        */
  71.       char combinaison[5] = "45738";
  72.       int chiffretrouve[5] = { 0 };
  73.       long couprestant = 12;
  74.       long i = 0;
  75.       return 0;
  76.       while (couprestant > 12 && !gagne (chiffretrouve))
  77.       {
  78.          printf ("\n\n Quel est la combinaison? \n\n" );
  79.          for (i = 0; i < 5; i++)
  80.          {
  81.             /* -ed- supprime ';' */
  82.             if (chiffretrouve[i])
  83.                printf ("\n\n %i \n\n", combinaison[i]);
  84.             else
  85.                printf ("\n\n 0 \n\n" );
  86.          }
  87.          printf ("\n\n Entrez 5 chiffres entre 1 et 8 \n\n" );
  88.          c = scanf ("%i", c);
  89.          /* -ed- Huh !  Je vois mal comment on peut entrer 5 chiffres avec ce code.
  90.             de plus, la valeur retournée par scanf() n'est pas ce que tu crois.
  91.             Il faut relire la doc... Enfin, scanf() attends une adresse.
  92.             De toutes façons, ton approche globale est à revoir. Il faut
  93.             abandonner l'idée que la combinaison est une valeutr numérique,
  94.             mais il faut plutût la traiter conne une chaine de caractères.
  95.           */
  96.          if (!recherchechiffre (c, combinaison, chiffretrouve))
  97.          {
  98.             couprestant--;
  99.          }
  100.          if (gagne (chiffretrouve))
  101.             printf ("\n\n Gagné la combinaison était bien : %i \n\n",
  102.                     combinaison);
  103.          else
  104.             printf ("\n\n Perdu la combinaison était : %i \n\n", combinaison);
  105.       }
  106.    }
  107.    return 0;
  108. }


Message édité par Emmanuel Delahaye le 01-04-2009 à 09:16:28

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Version simplifiée du jeu de Mastermind

 

Sujets relatifs
Récupérer version HTML[C#] Erreur déploiement suite changement de version VS
version de java navigateurEXISTE T IL UNE VERSION DE TURBO PASCAL ?
Version d'instance, suivi/journalisationConnaître les modules et la version des modules installés sur mon pc
[debutant] Programme perso de mastermind, qu'en pensez-vous?Qui sait changer la version du compilateur Java Studio Creator 2.
[JAVA] Forcer l'exécution d'une version antérieur du JREPHP / WAMP : version client API Mysql
Plus de sujets relatifs à : Version simplifiée du jeu de Mastermind


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR