Relance de realiser le jeu mastermind en c

Résolu/Fermé
trem_56_tu Messages postés 24 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 9 octobre 2008 - 8 déc. 2007 à 14:12
 sarroura139 - 11 avril 2015 à 10:28
Bonjour,la communaute j'ai besoin de votre aide une nouvelle fois.Voila je doit realiser un
programme simple en c le jeu master mind ce programme devra comporter une ou plusiers fonctions et
le programme principal. J'ai commencer à explorer quelques pistes ,voici une que je vous expose malgre cela je ne vois pas par ou coomencer donc je seche en l'occurence
ainsi que les differentes etapes du jeu
D'abord l

niveau 0
simulation du jeu mastermind

niveau 1
-debut du jeu(cacher combinaison:joueur1)
-propose 1 combinaison de 5 pions(joueur2)
-fin du jeu

niveau 2
sort une combinaison de 5 pions de couleur differente(joueur1)
le joueur 2 propose une combinaison de 5 pions
si la combi est trouver ou si les 10 tours sont atteint , la partie s'arrete
sinon on recoomence l'etape 2
niveau 3
initialiser le jeu : parties 10 tours,joueur1 et j2 au debut du jeu
tantque (la combi n'est pas trouve et que les 10tours ne sont pas atteints
- j2 modifie sa combi
-j1 affiche la quantité de pions ,le nombre de couleurs bien palcer
- on affiche le nombre de tours restant

niveau 4
+fin du jeu :si le j2 trouve la combi il gagne ou si le nombre de tours est atteint j1 gagne
+propsition du joueur 2
: il entre 1 couleurs (1chiffre) 5 fois de suite
+comparer les combi:
pour chaque pion que propose le joueur 2 on fait une comparaison avec le pion du j1 et on compte
le nonbre de position correcte
afficher le nonbre de position correcte.

voici les piste que j'explore :
fonction entrer
fonction pour entrer une couleur
int combi
{
int i;
printf (""entrer une valeur entre 1 et 4(1=bleu, 2=vert, 3=rouge, 4=jaune)
scanf ("%d",&pion);
return (pion)
}
# include<stdio.h>
int main (void)
{
int p1,p2,p3,p4,p5;
int f1,f2,f3,f4,
printf ("joueu1 »)
p1=combi();
p2=combi();
p3=combi();
p4=combi();
p5=combi();

5 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
8 déc. 2007 à 15:50
je te conseille plutot de prendre ton niveau 4 et tu fait une fonction pour chaque chose que tu veux faire
cad une fonction fin du jeu , une proposition joueur1, une proposition joueur2, et une autre compare les combi
il te reste plus qu'a trouver l'entete et le corps de ces fonctions ainsi que le code du main
bonne chance ;)
0
trem_56_tu Messages postés 24 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 9 octobre 2008 1
9 déc. 2007 à 12:55
bonour, mype tout d'abord je te remerci pour ton aide voila j'ai suivi tes conseille j'ai fait mon programme ,mais je constate qu'il ne tourne pas donc je compte sur toi pour l'analyser et pour que tu puisse apporter tes corrections ,ainsi que tu mes donne de precieux conseilles pour que je l'ameliore bien sur si je n'ai pas fait fauuse route merci d'avance voici ce programme que je soumet.

voici ce programme:

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

/*--------------------------------------
* Programme du jeu mastermind version .
* ------------------------------------- */


/*--------------------------------------
* Les fonctions utiles au
* programme principal
* ------------------------------------- */

// On initialise le cote aleatoire du jeu.
// Disons qu'on utilise l'heure d'execution du
// programme (localtime) pour cela.
void InitialiserAleatoire(void)
{
time_t t_loc;
struct tm *tmp;

time(&t_loc);
tmp= localtime(&t_loc);
srand(tmp->tm_sec);
}

// Fonction testant la fin de la partie
int jeuFinie( pion2,nTours)
{
// Si le joueur 2 trouve la bonne combinaison
// le jeu est finie
if (pion2==combi( ));
return 1;

// Si le nombre de tours est atteint alors le jeu est finie
if (pion2!=combi( ) && nTours==10)
{
printf ("desolé la partie est finie");
}
return 0;
}
//fonction gerant les combinaisons de 5 chiffres compris entre 1 et 4
int combi( )
{
int z;
int aleat; // Sert au tirage aleatoire de la combonaison du joueur 1

// On tire aleatoirement entre 1 et 4
aleat = (rand( ) % (4- 1 + 1)) + 1;
scanf("%d\n",&z);

return z;
}
//fonction de proposition du joueur 2
int proposepion(int pion2)
{
printf(" propose une combinaison joueur 2: ");
scanf ("%d",&pion2);

return pion2;
}

// Fonction qui affiche l'etat de la partie
int affichepartie(proposepion,nTours)
{
int d1,d2,d3,d4,d5;

do
nTours++;
while (nTours !=10);

if (d1!=combi( ) && d2!=combi( ) && d3!=combi( ) && d4!=combi( ) && d5!=combi( ))
printf ("desolé ,tu dois rejouer");

if (d1==combi( ))
printf ("seul un pion est bien placé");

else

printf ("la partie continue");

if (d2==combi( ))
printf ("seul un pion est bien placé");

else

printf ("la partie ne fait que commencer");

if (d1==combi( ) && d2==combi( ))
printf ("tu as deux pion bien placé");
else
printf ("cherche encore");

if (d3==combi( ))
printf (" seul 1 pion est bien placé");

else

printf ("creuse toi les méninge");

if (d1==combi( ) && d2==combi( ) && d3==combi( ) )
printf("ça devient intéressant tu as trouvé trois pions");

else

printf (" tu t'endort");

if (d1==combi( ) && d3==combi( ))
printf ("tu n'as touvé que deux pions bien placés");

if (d2==combi( ) && d3==combi( ) )
printf ("fait un effort tu n'est qu'à deux pions bien places");

else

printf (" je m' endort");

if (d4==combi( ))
printf ("tu as un pion bien placé");

if (d1==combi( ) && d2==combi( ) && d3== combi( ) && d4==combi( ))
printf ("je sens qu' on va bien s'amuser car tu as bien placé 4 pions");

if (d1==combi( ) && d4==combi( ))
printf("desolé, mais tu n'as que deux pions bien placés");

if (d2==combi( ) && d4==combi( ))
printf("tu as 2 pions bien placés");

if (d3==combi( ) && d4==combi( ))
printf ( " vraiment; tu as que 2 pion bien placés");

if ( d1==combi( ) && d2==combi( ) && d4==combi( ));
printf ("c'est pas mal,tu as 3 pions bien placés");

if (d1==combi( ) && d3==combi( ) && d4==combi( ))
printf (" tu as 3 pions bien placés");

if(d2==combi( ) && d3==combi( ) && d4==combi( ))
printf (" jolie tu as bien placé trois pions");

else

printf (" la partie ne fait que commencer");

if (d5==combi( ))
printf (" tu est loin du compte, tu n,as qu'1 pion bien placé");

if ( d1==combi( ) && d2==combi( ) && d3==combi( ) && d4==combi( ) && d5==combi( ))
printf("super tu as gagné, malheureusement pour moi je suis le perdant");

if ( d1==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if ( d2==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if ( d3==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if ( d4==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if (d1==combi( ) && d2==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");

if (d1==combi( ) && d3==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");

if (d1==combi( ) && d4==combi( ) && d5==combi())
printf (" tu as 3 pions bien placés");

if (d2==combi( ) && d3==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");


if (d2==combi( ) && d4==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");


if (d1==combi( ) && d2==combi( ) && d3== combi( ) && d5==combi( ))
printf ("génial tu as bien placé 4 pions");

if (d1==combi( ) && d2==combi( ) && d4== combi( ) && d5==combi( ))
printf (" ça m'inqiete tu as bien placé 4 pions");

if (d2==combi( ) && d3==combi( ) && d4== combi( ) && d5==combi( ))
printf (" zut! tu as bien placé 4 pions");

if (d1==combi( ) && d3==combi( ) && d4== combi( ) && d5==combi( ))
printf ("warning! tu as bien placé 4 pions");

printf("\n");
printf("--------------------------------------- \n\n");
}
/*Programme Principal
* ------------------------------------- */
int main(void)
{
int c1,c2,c3,c4,c5;
int nTours=10;
int pion2;
// Pour tirer des nombres aleatoires differents,
// on doit faire une petite manip avant tout tirage
InitialiserAleatoire( );

c1=combi( );
c2=combi( );
c3=combi( );
c4=combi( );
c5=combi( );


// Affichage de debut de la partie
printf("Que la partie commence \n");
affichepartie( proposepion,combi( ),nTours );

// On attends que l'utilisateur appuie sur la touche enter;
getchar( );

// La course continue tant que le jouuer 2 n' a pas trouve la bonne combinaison ou que les 10 tours ne sont pas atteint
while (jeuFinie(combi(),pion2, nTours) == 0 );

{
// le joueur 2 propose une comb;
pion2 =proposepion(pion2);

// On affiche la partie;
affichepartie(proposepion ,combi( ),nTours);

// On attends que l'utilisateur appuie sur la touche enter;
getchar( );
}

// Ici, la partie est forcement finie
// Ce qui suit sert a determiner qui est vainqueur
if (nTours!=10)
printf ("continue à chercher joueur 2 ! \n");
{
if(nTours==10)
printf("perdue joueur 2 ! \n");
else
printf("gagné : joueur 2 ! \n");

if (pion2!=combi( ))
printf("le gagnant est :le joueur 1 ! \n");

// Disons pour simplifier
// qu'il faut toujours mettre ceci a la fin du main
return 0;
}
}
0
trem_56_tu Messages postés 24 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 9 octobre 2008 1
9 déc. 2007 à 12:30
bonjour , mype viola je te soumet le programme que j'ai concocter j'ai suivi tes conseille ,mais je n'arrive pas à le faire fonctionner je compte sur toi pour que tu puisse me coooriger et de me signaler les coorectif que je dois lui apporter merci d'avance
voici ce proagramme:

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

/*--------------------------------------
* Programme du jeu mastermind version .
* ------------------------------------- */


/*--------------------------------------
* Les fonctions utiles au
* programme principal
* ------------------------------------- */

// On initialise le cote aleatoire du jeu.
// Disons qu'on utilise l'heure d'execution du
// programme (localtime) pour cela.
void InitialiserAleatoire(void)
{
time_t t_loc;
struct tm *tmp;

time(&t_loc);
tmp= localtime(&t_loc);
srand(tmp->tm_sec);
}

// Fonction testant la fin de la partie
int jeuFinie( pion2,nTours)
{
// Si le joueur 2 trouve la bonne combinaison
// le jeu est finie
if (pion2==combi( ));
return 1;

// Si le nombre de tours est atteint alors le jeu est finie
if (pion2!=combi( ) && nTours==10)
{
printf ("desolé la partie est finie");
}
return 0;
}
//fonction gerant les combinaisons de 5 chiffres compris entre 1 et 4
int combi( )
{
int z;
int aleat; // Sert au tirage aleatoire de la combonaison du joueur 1

// On tire aleatoirement entre 1 et 4
aleat = (rand( ) % (4- 1 + 1)) + 1;
scanf("%d\n",&z);

return z;
}
//fonction de proposition du joueur 2
int proposepion(int pion2)
{
printf(" propose une combinaison joueur 2: ");
scanf ("%d",&pion2);

return pion2;
}

// Fonction qui affiche l'etat de la partie
int affichepartie(proposepion,nTours)
{
int d1,d2,d3,d4,d5;

do
nTours++;
while (nTours !=10);

if (d1!=combi() && d2!=combi( ) && d3!=combi( ) && d4!=combi( ) && d5!=combi( ))
printf ("desolé ,tu dois rejouer");

if (d1==combi())
printf ("seul un pion est bien placé");

else

printf ("la partie continue");

if (d2==combi())
printf ("seul un pion est bien placé");

else

printf ("la partie ne fait que commencer");

if (d1==combi() && d2==combi( ))
printf ("tu as deux pion bien placé");
else
printf ("cherche encore");

if (d3==combi( ))
printf (" seul 1 pion est bien placé");

else

printf ("creuse toi les méninge");

if (d1==combi( ) && d2==combi( ) && d3==combi( ) )
printf("ça devient intéressant tu as trouvé trois pions");

else

printf (" tu t'endort");

if (d1==combi( ) && d3==combi( ))
printf ("tu n'as touvé que deux pions bien placés");

if (d2==combi( ) && d3==combi( ) )
printf ("fait un effort tu n'est qu'à deux pions bien places");

else

printf (" je m' endort");

if (d4==combi( ))
printf ("tu as un pion bien placé");

if (d1==combi( ) && d2==combi( ) && d3== combi( ) && d4==combi( ))
printf ("je sens qu' on va bien s'amuser car tu as bien placé 4 pions");

if (d1==combi( ) && d4==combi( ))
printf("desolé, mais tu n'as que deux pions bien placés");

if (d2==combi( ) && d4==combi( ))
printf("tu as 2 pions bien placés");

if (d3==combi( ) && d4==combi( ))
printf ( " vraiment; tu as que 2 pion bien placés");

if ( d1==combi( ) && d2==combi( ) && d4==combi( ));
printf ("c'est pas mal,tu as 3 pions bien placés");

if (d1==combi( ) && d3==combi( ) && d4==combi( ))
printf (" tu as 3 pions bien placés");

if(d2==combi( ) && d3==combi( ) && d4==combi( ))
printf (" jolie tu as bien placé trois pions");

else

printf (" la partie ne fait que commencer");

if (d5==combi( ))
printf (" tu est loin du compte, tu n,as qu'1 pion bien placé");

if ( d1==combi( ) && d2==combi( ) && d3==combi( ) && d4==combi( ) && d5==combi( ))
printf("super tu as gagné, malheureusement pour moi je suis le perdant");

if ( d1==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if ( d2==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if ( d3==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if ( d4==combi( ) && d5==combi( ))
printf("tu as 2 pions bien placés");

if (d1==combi( ) && d2==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");

if (d1==combi( ) && d3==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");

if (d1==combi( ) && d4==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");

if (d2==combi( ) && d3==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");


if (d2==combi( ) && d4==combi( ) && d5==combi( ))
printf (" tu as 3 pions bien placés");


if (d1==combi( ) && d2==combi( ) && d3== combi( ) && d5==combi( ))
printf ("génial tu as bien placé 4 pions");

if (d1==combi( ) && d2==combi( ) && d4== combi( ) && d5==combi( ))
printf (" ça m'inqiete tu as bien placé 4 pions");

if (d2==combi( ) && d3==combi( ) && d4== combi( ) && d5==combi( ))
printf (" zut! tu as bien placé 4 pions");

if (d1==combi( ) && d3==combi( ) && d4== combi( ) && d5==combi( ))
printf ("warning! tu as bien placé 4 pions");

printf("\n");
printf("--------------------------------------- \n\n");
}
/*Programme Principal
* ------------------------------------- */
int main(void)
{
int c1,c2,c3,c4,c5;
int nTours=10;
int pion2;
// Pour tirer des nombres aleatoires differents,
// on doit faire une petite manip avant tout tirage
InitialiserAleatoire( );

c1=combi( );
c2=combi( );
c3=combi( );
c4=combi( );
c5=combi();


// Affichage de debut de la partie
printf("Que la partie commence \n");
affichepartie( proposepion,combi( ),nTours );

// On attends que l'utilisateur appuie sur la touche enter;
getchar( );

// La course continue tant que le jouuer 2 n' a pas trouve la bonne combinaison ou que les 10 tours ne sont pas atteint
while (jeuFinie(combi( ),pion2, nTours) == 0 );

{
// le joueur 2 propose une comb;
pion2 =proposepion(pion2);

// On affiche la partie;
affichepartie(proposepion ,combi( ),nTours);

// On attends que l'utilisateur appuie sur la touche enter;
getchar( );
}

// Ici, la partie est forcement finie
// Ce qui suit sert a determiner qui est vainqueur
if (nTours!=10)
printf ("continue à chercher joueur 2 ! \n");
{
if(nTours==10)
printf("perdue joueur 2 ! \n");
else
printf("gagné : joueur 2 ! \n");

if (pion2!=combi( ))
printf("le gagnant est :le joueur 1 ! \n");

// Disons pour simplifier
// qu'il faut toujours mettre ceci a la fin du main
return 0;
}
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
9 déc. 2007 à 23:03
beaucoup trop de if
je te conseille d'utiliser des tableau pour faire simple
je te propose un programme tu peux le modifier un peu et rajouter des choses en fonction de ce que tu veux faire
si tu na pas compris quelquechose n'hesite pas a demander
#include <time.h>
#include <stdlib.h>
#include <stdio.h>

/*--------------------------------------
* Programme du jeu mastermind version .
* ------------------------------------- */


/*--------------------------------------
* Les fonctions utiles au
* programme principal
* ------------------------------------- */

void InitialiserAleatoire(void)
{
time_t t_loc;
struct tm *tmp;

time(&t_loc);
tmp= localtime(&t_loc);
srand(tmp->tm_sec);
}

// Fonction testant la fin de la partie
int jeuFinie( int combi1[4],int combi2[4], int nTour)
{
    int i,exact=0;
// Si le joueur 2 trouve la bonne combinaison
// le jeu est finie
    for(i=0;i<4;i++)
        if(combi1[i]==combi2[i])
            exact++;
    if(exact == 4)
        return 1;
// Si le nombre de tours est atteint alors le jeu est finie
    if(nTour == 10)
        return 1;

return 0;
}

//fonction de proposition du joueur 2
void proposeJoueur2(int *combi2[4])
{
    int i;

    printf("propose une combinaison joueur 2 avec un espace entre chaque chiffre : ");
    for(i=0;i<4;i++)
        scanf("%d",&combi2[i]);
}

int compare(int combi1[4], int combi2[4])
{
    int i,trouver=0;
    for(i=0;i<4;i++)
        if(combi1[i]==combi2[i])
        {
            printf("la couleur %d est correct \n",i+1);
            trouver++;
        }
    return trouver;
}


/*Programme Principal
* ------------------------------------- */

int main(void)
{
    int combi1[4],combi2[4];
    int nTour=0,i;
    InitialiserAleatoire();
    //on tire au hasard la combinaison du joueur 1
    for(i=0;i<4;i++)
        combi1[i]=(rand()%8)+1;

    printf("Que la partie commence \n appuyer sur une touche pour commencer");
    // On attends que l'utilisateur appuie sur la touche enter;
    getchar( );
    while(jeuFinie(combi1,combi2,nTour) == 0)
     {
        printf("il vous reste %d coup a jouer pour trouver la bonne combinaison\n",(10-nTour));
        proposeJoueur2(&combi2);
        compare(combi1,combi2);
        nTour++;
     }

    if(nTour != 10)
        printf("bravo vous avez gagne !\n");
    else
        printf("vous avez perdu\n");
    getchar();
return 0;
}
0
trem_56_tu Messages postés 24 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 9 octobre 2008 1
9 déc. 2007 à 23:33
bonsoir,mype je vais tout d'abord te remercier ,je vais tester ton programme ,je vais aussi voir ce que je peux rajouter et je te ferai signe en ce qui concerne le résultat.par contre je suis désolé pour la quantité de message c'est que je ne maitrise pas encore trés bien le fonctionnenement du forum.bye
0
il ny a aps une erreur dans le pgm
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slv programme c pour mastermind en couleur plzzz
0