MasterMind en C

Signaler
Messages postés
7
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
15 avril 2007
-
Messages postés
7
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
15 avril 2007
-
Salut a tous,
j'ai un problème en C. j'essaie de faire un jeu de masterMind mais il y a un problème au niveau de la decouverte des pions blancs je ne sais pas comment faire pour que ca fonctionne.
exemple : je choisi la combinaison J O B M (M mauve B bleu J = jaune O = orange)
et ensuite je saisis disons O B J M
il me donne le resultat : noirs : 0 blancs 0
alors que ca devrait etre : noirs : 0 blancs : 4
noir ->bien placé
blanc ->mal placé

Merci de votre aide
Fab

voila mon code j'espere que ce sera lisible

#include <stdio.h> // librairie d'entrée et de sortie
#include
#include <stdlib.h>
#include <conio.h>

main()
{
char tabcoul[4],tabresult[4]; // déclaration des tableaux des joueurs 1 et 2
int i,j,k,n,z; // déclaration des variables (compteurs)
int verif[4]; // déclaration du tableau de vérification
int blanc;
int noir;

puts("\n");
puts("\n");
puts("\n");

puts("JOUEUR 1\nA vous de commencer\n");
puts("Choisissez une combinaison de 4 couleurs en utilisant les couleurs suivantes: \n V =vert \n O=orange \n B=bleu \n R=rouge \n J=jaune \n M=mauve\n");

for (i=1;i<5;i++)//remplir le tableau des couleur à trouver
{
fflush(stdin); // rafraichir la mémoire tampon
printf("Saisir couleur %d:\n",i);
scanf("%c",&tabcoul[i]);
while (tabcoul[i]!='V' && tabcoul[i]!='O' && tabcoul[i]!='B' && tabcoul[i]!='R' && tabcoul[i]!='J' && tabcoul[i]!='M')
{
puts("Caractere incorrect. Veuillez resaisir :");
fflush(stdin); // rafraichir la mémoire tampon
printf("Saisir couleur %d:\n",i);
scanf("%c",&tabcoul[i]);
}
}
printf("\n");

printf("Vous avez choisi :\n");
printf("\n");
for (i=1;i<5;i++)
{
printf(" - %c - ",tabcoul[i]);//affiche les couleurs choisies
}
printf("\n");
printf("\n");
system("\nPAUSE\n");

system("CLS");
puts("JOUEUR 2 \nA vous de trouver la combinaison \n");

for (j=1;j<11;j++)
{

printf("\nEssai No. %d :\n", j);

for (k=1;k<5;k++)
{
fflush(stdin); // rafraichir la mémoire tampon
printf("Saisir couleur %d:\n",k);
scanf("%c",&tabresult[k]);
while (tabresult[k]!='V' && tabresult[k]!='O' && tabresult[k]!='B' && tabresult[k]!='R' && tabresult[k]!='J' && tabresult[k]!='M')//empeche de saisir n'importe quel caractere
{
puts("Caractere incorrect. Veuillez resaisir :");
fflush(stdin); // rafraichir la mémoire tampon
printf("Saisir couleur %d:\n",k);
scanf("%c",&tabresult[k]);
} // fin while

} //fin for k
noir=0;
blanc=0;
for(n=1;n<5;n++)
{
if(tabcoul[n]==tabresult[n])//compare deux tableau si vrai noir=noir+1
{
noir++;
}
else
{
if(tabcoul[n]==tabresult[0] && tabcoul[n]==tabresult[1] && tabcoul[n]==tabresult[2] && tabcoul[n]==tabresult[3])//compare pour les blancs si vrai: blanc++
{
blanc++;
} //fin si

} //else - fin sinon

}// fin for n
printf("Noirs : %d\n",noir);
printf("Blancs : %d\n",blanc);



}//fin for j




system("PAUSE");
return 0;
}

2 réponses

Messages postés
14
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
30 octobre 2006

Je ne connais pas vraiment les règles de ce jeu mais si j'ai compris, tu devrais remplacer le contrôle

if(tabcoul[n]==tabresult[0] && tabcoul[n]==tabresult[1] && tabcoul[n]==tabresult[2] && tabcoul[n]==tabresult[3])

par

if(tabcoul[n]==tabresult[0] || tabcoul[n]==tabresult[1] || tabcoul[n]==tabresult[2] || tabcoul[n]==tabresult[3]).

Dans ton programme, pour qu'un "blanc" soit ajouté, il faudrait que les 4 positions correspondent au pion scanné!


sten
ka
Messages postés
7
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
15 avril 2007

Merci pour ta réponse rapide ca marche deja beaucoup mieux mais selon l'odre des combinaison ca ne donne pas toujours le meme resultat
ex :
je choisis J O M B
et je saisis O M B J

je devrais voir apparaitre
noirs : 0
blancs: 4
mais ca donne
Noirs : 0
Blancs : 3