perdue
-
13 déc. 2007 à 13:18
phil232
Messages postés607Date d'inscriptionmardi 25 septembre 2007StatutMembreDernière intervention31 janvier 2008
-
13 déc. 2007 à 17:09
Bonjour, j'ai fait un programme sur le jeu mastermind ,pourrait-on me corriger ou améliorer si quelque chose ne va pas ?
merci
#include <stdio.h>
#include <stdlib.h>
/* fonction qui determine si tous les chiffres saisies sont bien
compris entre 1 et 7 inclus */
int BonneSaisie(int n,int T[])
{ int i;
for (i=1;i<n+1;i++)
{if (T[i]<0 || T[i]>7)
return 0;
}
return 1;
}
/* la fonction que voulez vous faire?*/
int QueFaire ()
{
int rep;
printf("que voulez vous faire ? :\n\n");
printf(" JOUER 1\n");
printf(" REJOUER LE MEME 2\n");
printf(" DONNER LA SOLUTION 3\n");
printf(" QUITTER 4\n\n");
scanf("%d",&rep);
return rep;
}
/*la fonction nombres aléatoires aleatoirement */
void SaisieInitiale(int n,int T[])
{
int i;
for (i=1;i<n+1;i++)
{
T[i]=( (rand()%7)+1);
}
}
/* fonction afficher le tableau initiale*/
void Afficher_Saisie_Initiale(int n, int T[])
{
int i;
for (i=1;i<n+1;i++)
{
printf("%d ",T[i]);
}
printf("\n\n\n");
}
/* fonction qui demande nombre */
void SaisieJoueur(int n, int Tbis[])
{
int i;
printf("\n\n entrez vos quatres valeur separes par un espace :\n");
for (i=1;i<n+1;i++)
{
scanf("%d",&Tbis[i]);
}
if (0==BonneSaisie(n,Tbis))
{
printf(" erreur dans vos chiffres: nouvelle saisie :");
SaisieJoueur(n, Tbis);
}
}
/*passons a la fonction copie qui copie le tableau initiale
affin qu´on puisse y travailler dessus*/
//nouvelle version
void Copie (int n, int T[],int T1[])
{
int i;
for (i=1;i<n+1;i++)
{
T1[i] = T[i];
}
}
/*passons maintenant aux fonctions plus précise
qui va nous indiquer
combien de chiffres sont bien placé */
int BienPlace(int n, int T[], int T1[])
{
int i;
int bp=0;
for (i=1;i<n+1;i++)
{
if (T[i]==T1[i])
{
bp+=1;
T[i]=9; //on remplace par 9 pour ne pas le compter deux fois
T1[i]=9;
}
} //ici aussi
return bp;}
/*maintenant les mal placé*/
int MalPlace(int n,int T[],int T1[])
{
int i,j,mp=0;
for (i=1;i<n+1;i++)
{
for (j=1;j<n+1;j++)
{
if (T[i]==T1[j]/*&& i!=j */&& T[i]!=9 && T1[j]!=9)
{
mp+=1;
T[i] = 9; //on remplace ici aussi par 9
T1[j] = 9;}
}
} //ici aussi
return mp;
}
/*ecrivons une fonction qui determine si le ta bleau comporte que des 0*/
int FIN(int n, int T[])
{
int i;
for (i=1;i<n+1;i++)
{
if (T[i] == 0)
return 0;
}
return 1;
}
/*attaquons le gros du sujet mais toujour pas la fonction main*/
void mastermind()
{
int nbfoix=0; int T[5];int bpf=0;int nbfoixmax=12;
SaisieInitiale(5,T); //saisie aleatoirement les numero
AfficherSaisieInitiale(5,T); //a ne pas laisser dans la version finale
while (bpf != 5)
{
int Tbis[5];
SaisieJoueur(5,Tbis);
if (0==FIN(5,Tbis))
{
printf("vous avez decide d arreter a bientot\n");
break;}
nbfoix+=1;
// AfficherSaisieInitiale(5,Tbis);
/*int Tcop[5];
copie(5,T);*/
int Tcop[5];
/*debut de la copie manuelle*/
/* Tcop[1]=T[1];
Tcop[2]=T[2];
Tcop[3]=T[3];
Tcop[4]=T[4];
Tcop[5]=T[5];*/
// AfficherSaisieInitiale(5,Tcop);
/*fin de la copie manuelle*/
Copie(5,T,Tcop);
bpf=BienPlace(5,Tcop,Tbis);
printf("il y a %d chiffres bien places" ,bpf);
printf("\n");
printf("il y a %d chiffres mal places\n",MalPlace(5,Tcop,Tbis));
if (nbfoix==nbfoixmax) {
printf("vous avez expirer votre nombre de fois\n");
break;
}
if (bpf ==5)
{
printf("VOUS AVEZ GAGNER\n");
}
}}
/*maintenant la fonction main*/
int main()
{printf("bienvenue dans MasterMind\n\n");
int nbpr =9; // pour 8 ca met des zero
/* while (QueFaire()==1) fonction du deb
ut
{srand(nbpr);
nbpr+=1;
mastermind();
} */
/*ameliorons la fonction pour nous donner la posssibilité
de rejouer le mastermind precedent ou bien d´imprimer la solution*/
int rep; int Tres[5];
while ((rep = QueFaire())!=4)
{
srand(nbpr);
if (rep==1)
{
/*srand(nbpr);*/
nbpr+=1;
mastermind();
}
else if(rep==2)
{
srand(nbpr-1);
/*nbpr+=1;*/
mastermind();
}
else if (rep==3)
{
srand(nbpr-1);
SaisieInitiale(5,Tres);
printf("\n\n la solution etait : ");
AfficherSaisieInitiale(5,Tres);
}
}
printf("\n A TRES BIENTOT SUR MASTERMIND \n\n\n\n");