Master mind console

Contenu du snippet

Basé sur le traitement de deux chaines de caractères et l'utilisation
de caractères jokers, c'est un mastermind très simple et paramétrable.
Si vous connaissez une méthode plus simple, ça m'intéresse.

Source / Exemple :


#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{
int nbcoups=0;
int nbchiffre=0;
int nbp=0,nmp=0,gagne=0,i,j,k;
char combinaison[10], combijeu[10];
char jeu[10];
time_t t;
srand((unsigned) time(&t));

printf("en combien de coups jouez vous ?");
scanf("%d",&nbcoups);
if (nbcoups <1)nbcoups =1;
if (nbcoups>12)nbcoups =12;
printf("avec combien de chiffres ?");
scanf("%d",&nbchiffre);
if (nbchiffre <1)nbchiffre =1;
if (nbchiffre>9)nbchiffre =9;
for(i=0; i<nbchiffre; i++)
{
combinaison[i]=(char)(rand()%10+'0');
}
combinaison[i]=0;

for(i=0; i<nbcoups && gagne==0 ; i++)
  {
  printf("essai N° %d :",i);
  scanf("%s",jeu);
  if(!strncmp(jeu,combinaison,nbchiffre)) gagne=1;
  else
   {
   strcpy(combijeu, combinaison);
   nbp=0; nmp=0;
   for(j=0;j<nbchiffre; j++)
    {
    if(jeu[j]==combijeu[j]){nbp++;jeu[j]='B';combijeu[j]='b';}
    }

   for(j=0;j<nbchiffre; j++)
     {
     for(k=0;k<nbchiffre;k++)
       if(j!=k && jeu[j]==combijeu[k])
         {jeu[j]='M';combijeu[k]='m'; nmp++;}
      }
    printf("Bien places :%d Mal places :%d", nbp,nmp);
    }
  }

  if(gagne)
  {  printf ("trouve en %d coups",i);  }
  else
  {  printf("la bonne combinaison :%s",combinaison); }

  scanf("%s",jeu);

}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.