Bonjour
Étudiant en licence de biologie, je dois créer le code du jeu master mind, mais voilà je suis bloqué. J'ai fait des recherches sur internet, mais je n'arrive désespérément pas à voir ce qui cloche....
Mon problème est que le programme ne lit que 4 caractères sur 5 entré par le joueur 1, et que le 5em caractère ce trouve expulsé à la combinaison suivante. Même chose avec le joueur 2.
Si quelqu'un peut m'aider à comprendre..
Merci d'avance.
(Je suis sous windows 7 et j'utilise Dev-C++.)
Voici mon code:
#include <stdio.h>
// --------------variables------------
char C1[5], C2[5];
// -----------Introduction aux principes du jeux--------
void principes_jeu()
{
printf("\n" );
printf("***********************************\n" );
printf("* *\n" );
printf("* Mastermind *\n" );
printf("* *\n" );
printf("***********************************\n" );
printf("\n" );
printf(" Vous allez jouez au Mastermind.\n" );
printf("\nCe jeu consiste à decouvrir une combinaison faite de cinques couleurs\n(rouge, jaune, vert, bleu)\n" );
printf("\n" );
printf("Cette combinaison à ete prealablement entre par votre adversaire.\n" );
printf("vous aurez 5 tentatives pour découvrir cette combinaison de couleur,\npour entre une couleur dans le programmme vous prendrez la \npremiere lettre de la couleur que vous voulez, ex: rouge -> r\n" );
printf(" B= bonne couleur au mauvais endroit, X= ne ce trouve pas dans la combinaison,N= bonne endroit et bonne couleur.\n" );
printf("\n" );
}
// -----------processus de saisie---------
// Joueur 1
void saisie_combi1(int j)
{ j==1;
scanf("%c %c %c %c %c",&C1[0],&C1[1],&C1[2],&C1[3],&C1[4]);
}
// Joueur 2
void saisie_combi2 (int j)
{ j==2;
printf("Joueur 2 entrez une combinaison et tentez de decouvrir la combinaison du joueur 1.\n" );
scanf("%c %c %c %c %c",&C2[0],&C2[1],&C2[2],&C2[3],&C2[4]);
}
//-------processus d'affichage des combinaisons---------
void afficher_combi (int J)
{
int i;
if (J==1)
{
for (i=0; i<5; i++)
{
printf ("%c ",C1[i]);
printf ("\n" );
}
}
else
if (J==2)
{
for (i=0; i<5; i++)
{
printf ("%c ",C2[i]);
printf ("\n" );
}
}
}
//--------------processus de comparaison des combinaisons entre joueur 1 et joueur 2---------------
int compare ()
{
int i,j,cases=0;
for (i=0; i<5; i++)
{
if (C1[i]==C2[i])
{
printf ("N" ),cases ++;
}
else
{
j=1;
while ( (C2[i]!=C1[(i+j)%5]) && (j<5) )
{
j=j+1;
}
if (j<5)
{
printf ("B" );
}
else
{
printf ("X" );
}
}
}
return cases;
}
// ------------corp du programme-----------
int main ()
{
principes_jeu();
int nb_essais=0; /* le nombre d'essai est à zéro */
printf("Joueur 1 entre votre combinaison de couleur, avec un espace entre chaques lettres désignant une couleur.\nexemple : r b j r v\n" );
printf("\n" );
saisie_combi1 (1);
system ("cls" ); /* Le joueur 1 à saisi la combinaison que le joueur 2 doit découvrir, puis le programme cache cette combinaison au joueur 2.*/
do
{
printf ("\njoueur 2,essai numero:%d\n", nb_essais);
saisie_combi2 (2);
afficher_combi (2);
nb_essais ++; // le joueur tente de découvrir la combinaison en entrant une combinaison, puis l'essai est ajouté.
}
while ( (nb_essais<10) && (compare ()!=5) ); // boucle de calcul du nombre d'essai restant et de la comparaion des combinaisons.
if (nb_essais<10)
{
printf("vous avez gagne !!\n" );
}
}