CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[help] Programation Mastermind console C

wolfsinshadows
wolfsinshadows
Niveau 6
11 janvier 2012 à 21:47:25

Salut à tous.

Voilà je dois réaliser un mastermind en language C pour l'école (compte pour beaucoup de points :( )

J'ai copier le code mais il me reste quelques problèmes tels que: - je dois remettre 2 fois les 4 lettres pour qu'il prenne en compte mon premier essai

-Il insère parfois des smileys dans les couleurs...

Merci de votre aide précieuse et voici mon code (:

  1. include<stdio.h>
  2. include<stdlib.h>
  3. include<time.h>
  4. include<string.h>
  5. include <ctype.h>

void afficherJeu ();
void initialisercode (int *codes);

int main ()

{
int choix;

printf("\t\t--------------------------------------
---\n\n");
printf("\t\tProgramme realise par : Waroquier Florian\n");
printf("\t\t\tSection : IRT Groupe : 1\n");
printf("\t\t\tAnnée académique : 1ere\n");
printf("\t\t\tNom de l'enseignant : De Bodt\n");
printf("\t\t\tProjet : Jeu du Mastermind\n\n");

printf("\t\t--------------------------------------
---\n\n");
printf("\t\t\t======== MENU ========\n");
printf("\t\t\t(1) : Jouer\n");
printf("\t\t\t(2) : Regles du jeu\n");
printf("\t\t\t(3) : Quitter\n\n");
printf("\t\t\t=======================\n\n");
printf("\t\t\tQue voulez-vous faire ?\n\n\n\n\n\n\n\n");

scanf("%d",&choix);

while (choix<1 || choix>3) //si l'utilisateur introduit un nombre éronné, il devra en retapper un nouveau jusqu'à ce que celui-ci soit correcte.

{
printf("\nChoix invalide, veuillez reessayer:\n\n\n");
scanf("%d",&choix);
}

if (choix==1)

{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\nle jeu va
commencer\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\
n\n\n\n");
system("pause");
afficherJeu();

}

if (choix==2) // s'il tappe 2 il tombera sur les règles.

{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\tLe but du jeu est de deviner dans l'ordre les quatre couleurs choisies\n par l'ordinateur. Six couleurs seront a votre disposition, et vous aurez droit\n a dix combinaisons pour pouvoir deviner le code secret.\n\n\tPour chaque tentative l'ordinateur indique le nombre de couleurs bien\n placees (a l'aide de pion noir) et le nombre de couleurs mal placees \n(a l'aide de pion blanc).\n\n\t Si le nombre maximal d'essais est atteint, vous aurez perdu et\n la combinaison vous sera alors devoilee. \n\n\n\n\n") ;
system("pause");

}

if (choix==3)
{

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n");

}
}

void afficherJeu ()
{
int i, l, compteur=1, ligne=9;
char combilettre[5], combinaison[5], lettre, combi ;
char tabinitial[10][8]={
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46},
{42,42,42,42,46,46,46,46}
};

system("cls"); // Nettoye la console

combilettre[0]='r';

combilettre[1]='v';

combilettre[2]='b';

combilettre[3]='j';

combilettre[4]='m';

combilettre[5]='o';

srand(time(NULL)); //permet de générer une suite différente à chaque éxécution.

for(i=0;i<4;i++)
{
do{
combinaison[i] = combilettre[rand()%6];
}
while(combinaison[i]==combinaison[i-1]);
printf("%c", combinaison[i]);
}

while(compteur<=10)
{
int i, j, k, w, numerotation=10;
char combi[4]={'\0'};

system("cls");

printf("\t\t\t\tCouleurs disponibles: \n\n\n");
printf("\tr = Rouge - v = Vert - j = Jaune - o = Orange - m = Marron - b = Bleu\n\n\n\n\n");

for (i=0;i<=9;i++)
{
printf("[%3d]-[",numerotation);

for (k=0;k<=7;k++)
{
printf("(%c)",tabinitial[i][k]);
}
printf("]\n");
numerotation--;
}

do
{

printf("\n\nEssai n# %d: \n",compteur);
scanf("%s",&combi);
fflush(stdin);

for(w=0;w<=3;w++)
{
if (combi[w]=='r' || combi[w]=='v' || combi[w]=='b' || combi[w]=='m' || combi[w]=='j' || combi[w]=='o')
{
l++;
}
}
if(l!=4)
{
l=0;
}
}
while (l!=4);

printf("\nCombinaison erronee, veuillez reessayer");
l=0;

if (compteur!=10)
{
for (i=0;i<=3;i++)
{

if (combi[i]==combinaison[i])
{
tabinitial[ligne][i]=combi[i];
tabinitial[ligne][i+4]=78;
}

else
{
if (combi[i]==combinaison[i])
{
tabinitial[ligne][i]=combi[i];
tabinitial[ligne][i+4]=66;
}
else
{
tabinitial[ligne][i]=combi[i];
tabinitial[ligne][i+4]=46;
}
}
}

fflush(stdin);
compteur++;
ligne--;
}

else
{
printf("\nMalheureusement vous n'avez pas trouve la bonne combinaison\n\n");
printf("Celle-ci etait: ");
for(i=0;i<5;i++)
{
printf("%c", combinaison[i]);
}
printf("\n\n");

break;
}
}
system("pause");
}

wolfsinshadows
wolfsinshadows
Niveau 6
11 janvier 2012 à 22:01:41

:up: c'est important svp.. Si quelqu'un sait m'aider.

Luxiamimi
Luxiamimi
Niveau 5
11 janvier 2012 à 22:41:47

Tu auras sans doute plus d'aide ici :
http://www.siteduzero.com/

Et puis, dis-nous avec de belles phrases ou de beau extrait de compilateur ou de code qu'est-ce qui cloche.

Novantest
Novantest
Niveau 2
11 janvier 2012 à 23:47:25

Il te demande 2 fois la première combinaison parce que tu n'initialises pas ta variable l quand tu la déclares. Mets là à 0 et c'est bon.

Par contre je comprend pas le problème "Il insère parfois des smileys dans les couleurs".

(et à part ça, quand tu postes ton code en ligne, passe par un site qui te l'affichera correctement, avec l'indentation, parce que là c'est pas lisible, et accessoirement ça créé des sauts de ligne qui empêchent de le copier/coller directement.

wolfsinshadows
wolfsinshadows
Niveau 6
12 janvier 2012 à 00:04:53

Merci pour vos réponses !

Novantest en fait il est censé prendre les lettres b v j r o m mais il prends aussi des smileys en effet dans le code secret j'y ai retrouver un smiley "(:" donc carrément la tête du bonhomme.

Encore merci !

wolfsinshadows
wolfsinshadows
Niveau 6
12 janvier 2012 à 00:07:57

Voilà, un smiley comme ici:

http://s4.noelshack.com/upload/2630099773719_sans_titre.png

Novantest
Novantest
Niveau 2
12 janvier 2012 à 00:09:59

Je savais même pas que la console savait afficher des smileys ^^' Donc là, aucune idée...

wolfsinshadows
wolfsinshadows
Niveau 6
12 janvier 2012 à 00:11:43

( Et la console n'affiche pas lorsque j'ai trouvé la bonne réponse, celle-ci continue de compter les essais)

Encore merci pour ton aide Novantest (:

Luxiamimi
Luxiamimi
Niveau 5
12 janvier 2012 à 00:11:50

IL nous invente des caractères ASCII ou quoi ? ^^

wolfsinshadows
wolfsinshadows
Niveau 6
12 janvier 2012 à 00:14:45

Apparemment oui c'est assez suspect ^^'

Novantest
Novantest
Niveau 2
12 janvier 2012 à 00:18:32

Ok je crois que j'ai trouvé

(chez moi il fait un coeur)

Tu créés un tableau combilettre de 5 cases, mais tu assignes la lettre 'o' à la 6eme case. Donc à chaque fois qu'il génère un 'o', il déconne.

Donc tu prends 6 cases pour combilettre, et ça ira.

D'ailleurs, il vaut mieux éviter d'écrire

char combilettre[6];

Il vaut mieux faire

  1. define NMBR_LETTRES 6

char combilettre[NMBR_LETTRES];

Ca revient au même, mais c'est plus lisible (et tu changeras plus facilement le nombre de lettre).

godrik
godrik
Niveau 30
12 janvier 2012 à 00:20:11

met le code sur un wall come pastebin.com

Novantest
Novantest
Niveau 2
12 janvier 2012 à 00:21:43

A part ça, c'est pas exactement les règles du Mastermind, normalement ça doit te renvoyer le nombre de pièces bien placées, et le nombre de pièces présentes mais mal placées...

wolfsinshadows
wolfsinshadows
Niveau 6
12 janvier 2012 à 15:36:06

Merci Novantest pour le char [6] (:

J'ai malheureusement des problèmes avec les pions Blancs (qui ne se placent pas) et les points. (caractères 46 et 66 sous ascii)

http://pastebin.com/dq2TQvmH voici le code sur pastabin.

Merci (:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment