MASTERMIND[DEV C++]

Bonjour,
je suis débutant sur C++ et j'utilise devC++
j'essaye des crée de petits jeux mais devant ce lui la je bloque
merci de m'aider



comment crée le jeux master mind sur c++
il y a une combinaison de couleur a trouver
les couleurs possible sont 4 : r b v j
je jeu doit afficher le nombre de couleur qui sont a leur position et le nombre de couleur mal positionner
exemple pour le code rbvj
quand je tape bvvj
l' affichage est comme le suivent
couleur identique :2
couleur mal positionner :1
c'est l'utilisateur qui choisir la combinaison
et il y a le droit a 6 essai pas plus
et si sa de combinaison est toute juste avant le 6ém essai
l'affiche est "gagner" sinon "perdu"
apparemment ca ce fait avec un tableau non !
merci

3 réponses

  1. peur etre c'est mieux comme ca mais tjr
    des fautes a gogo

    /*

    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define NBCOUL 4
    #define NBESS 6

    main()
    {
    char codeSecret[NBCOUL] ; // tableau contenant les 4 couleurs à trouver
    //char copie[NBCOUL] ; // tableau contenant la copie du tableau combinaison
    char reponse,essai[NBESS] ; // tableau contenant chacun des essais
    int i , k, n ; // indice de parcours des tableaux
    int test; // compteur d'essai avant de trouver la formule
    int bb=0, mm=0 ; // compteurs de bien et mal placés

    srand(1810)

    for(i=0;i<NBCOUL;i++)
    {
    switch(rand()%4){
    case 0: codeSecret[i]='r';break;
    case 1: codeSecret[i]='b';break;
    case 2: codeSecret[i]='v';break;
    case 3: codeSecret[i]='j';break;
    }
    }

    // Le do pour rejouer
    do {

    // 6 Essais Max
    for (test = 0; test < NBESS; test++){
    do{
    do{

    printf("Entrez votre combinaison : " );
    scanf("%c", &essai[n]);
    n++;
    }
    while (n < NBCOUL);

    // boucle pour les valeurs presentes et bien placees
    n=0;
    i=0;
    for (j = 0; j < NBCOUL; j++)
    {
    if (essai[n] == codeSecret[i] && n == i)
    {
    bb++;
    }
    n++;
    i++;
    }
    printf("Couleur identique: %d",bb);
    // boucle pour les valeurs presentes mais mal placees
    n=0;
    i=0;
    for (j = 0; j < NBCOUL; j++)
    {
    if (essai[n] == codeSecret[i] && n != i)
    {
    mm++;
    }
    n++;
    i++;
    }
    printf("Couleur presentes : %d",mm);

    }
    while (bb<NBCOUL);
    printf("\nVous avez gagne ");

    }
    printf("\nVous avez perdu ");

    // Afficher la combinaison pour le perdant
    if (bb<NBCOUL)
    {
    printf("\nLa combinaison etait %c %c %c %c ",codeSecret[0],codeSecret[1],codeSecret[2],codeSecret[3] );
    }

    // Demander si le joueur veut rejouer
    printf("\nVoulez-vous rejouer ? (o/n) ");
    scanf(" %c", &reponse);
    }
    while (reponse == 'o' || reponse == 'O');
    if (reponse == 'n' || reponse=='N' ) printf("Fin du jeu ");

    system("pause");
    }
    0
    1. j'ai fait ca mais il y a plein de problèmes

      merci bibnowhere ca m'a aidé ce que tu m' a écrie
      j'ai pas trouvé d' autre solution qu'avec ces 3 whiles
      ca cree une boucle infinie en cas de mauvaise réponse
      je suis perdu !!

      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>
      #define NBCOUL 4
      #define NBESS 6

      main()
      {
      char codeSecret[NBCOUL] ; // tableau contenant les 4 couleurs à trouver
      //char copie[NBCOUL] ; // tableau contenant la copie du tableau combinaison
      char reponse,essai[NBESS] ; // tableau contenant chacun des essais
      int i , k, n ; // indice de parcours des tableaux
      int test, nbEssai; // compteur d'essai avant de trouver la formule
      int bb=0, mm=0 ,NBCOUL ; // compteurs de bien et mal placés

      srand(1810)

      for(i=0;i<BNCOUL;i++)
      {
      switch(rand()%4){
      case 0: codeSecret[i]='r';break;
      case 1: codeSecret[i]='b';break;
      case 2: codeSecret[i]='v';break;
      case 3: codeSecret[i]='j';break;
      }
      }

      do {

      do{
      do{

      printf("Entrez votre combinaison : " );
      scanf("%c", essai[n]);
      n++;
      }
      while (n < NBCOUL);

      /* boucle pour les valeurs presentes et bien placees*/
      n=0;
      i=0;
      for {(j = 0; j < NBCOUL; j++)
      if {essai[n] == codeSecret[i] && n == i
      bb++; }
      n++;
      i++;
      }
      printf("Couleur identique: %d",bb);
      /* boucle pour les valeurs presentes mais mal placees */
      n=0;
      i=0;
      for (j = 0; j < NBCOUL; j++){
      if {essai[n] == codeSecret[i] && n != i
      mm++; }
      n++;
      i++;
      }
      printf("Couleur presentes : %d",mm);

      test++;

      }
      while (bb<NBCOUL);
      printf("\nVous avez gagne " )

      }
      while (test<NBESS)
      printf("\nVous avez perdu " )};

      /* Demander si l'usager veut continuer */
      printf("\nVoulez-vous continuer ? (o/n) " );
      scanf(" %c", &reponse);
      }
      while (reponse == 'o' || reponse == 'O');
      if (reponse == 'n' || reponse=='N' ) printf("Fin " );

      system("pause" );
      }
      0
      1. Bonjour bayarno,

        En effet pour réaliser un mastermind en C/C++ il faut utiliser un tableau.

        Je vous donne juste la déclarations des variables et vous laisse chercher la suite (et oui en développement, on passe beaucoup de temps à chercher,se creuser les méninges et c'est cela son plus grand charme :-))

        char combinaison[5]; // tableau contenant les 5 couleurs à trouver
        char copie[5] // tableau contenant la copie du tableau combinaison
        char essai[6] // tableau contenant chacun des essais
        int i, // indice de parcours des tableaux
        nbEssai // compteur d'essai avant de trouver la formule
        bp, mp // compteurs de bien et mal placés

        Bon courage pour la mise en place de ce petit jeu.

        Bien cordialement.

        BibNowhere
        1