1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| #include <iostream>
#include <myconio.h>
using namespace std ;
typedef char typeformule[5];
void afficheValeur(int x,int y, int val){ // permet d'afficher la valeur au coordonné voulu
gotoxy(x,y) ;
cout<<val ; // val prendra la valeur du bien placer ou du mal placer
}
int CaractereValide(char c) { // Détermine si le caractere saisie correspond à un caractere valide
int i = 0;
char VarCoul [7] = {'B','R','N','V','J','O','G'};
for (i=0;i<6;i++){
while (VarCoul[i] != c && i < 6){
i++;
}
return (VarCoul[i] == c);
}
}
char SaisieCouleur(int x, int y){ // Permet de saisie une couleur qui sera valider grâce a caractere valide
char c ;
do {
gotoxy(x,y) ;
c = getche();
}while(!CaractereValide(c));
return c;
}
int calculBP(typeformule VarEssai, typeformule VarCopie){ // fonction qui permet de verifier combien de coups sont bien place
int i, cp;
for (i=0;i<5;i++){
if (VarCopie[i],(VarCopie[i] == 'X')){ // permet d'éviter de recalculer dans le vide à chaque saisie
// i++;
}else{
if ((VarEssai[i] == VarCopie[i])){
cp = cp + 1; // compteur des coup bien place
VarCopie[i] = 'X';
}
}
}
return cp ;
}
int calculMP(typeformule VarEssai, typeformule VarCopie){ // fonction qui permet de verifier combien de coups sont mal place
int i, j, cl;
for (i = 0; i < 5; i++){
for (j = 0; j < 5; j++){
if (VarEssai[i] == VarCopie[j]){
cl = cl + 1; //compteur des coup mal place
VarEssai[i] = 'X';
VarCopie[j] = 'Y';
}
}
}
return cl;
}
int main() {
typeformule VarCopie, VarEssai, VarOriginal ;
int x, y, i, nbessai, ligne;
char c;
int cp, cl ;
ligne = 7 ;// me permet de faire varier ma ligne pour chaque essai
nbessai = 0; // initialise le nombre d'essai
gotoxy(25,1); // afficher une phrase de bienvenue
cout<<"Welcome to the MasterMind";
gotoxy(1,3); // afficher la phrase d'accroche
cout<<"Entrer votre code secret :";
for(i=0;i<5;i++){ // permet de saisir nos valeurs
VarOriginal[i] = SaisieCouleur(30+i*4,3);
gotoxy(30+i*4,3); cout<<"X"; // permet de cacher les lettre compose sans devoir effacer l'écran
VarCopie[i] = VarOriginal[i] ; // VarCopie prend les valeurs de VarOrignal
}
// gotoxy (1,5); cout<<VarCopie[2] ; test
gotoxy (1,5); cout<<"Joueur deux veuillez trouver la combinaison";
do {
gotoxy(1,ligne); // mettre une variable pour descendre d'une ligne à chaque fois
cout<<"Dechiffrer le code secret :";
for(i=0;i<5;i++){ // permet de saisir nos valeurs
VarEssai[i] = SaisieCouleur(30+i*4,ligne);
}
calculBP(VarCopie, VarEssai); // calcul les bien palcer
calculMP(VarEssai, VarCopie); // calcul les mal placer
afficheValeur(50,ligne, calculBP(VarEssai, VarCopie)); // afficher le nombre de coup bien placer
afficheValeur(55,ligne, calculMP(VarEssai, VarCopie)); // affiche le nombre de coup mal plcer
nbessai ++;
ligne ++;
}while (calculBP(VarEssai, VarCopie) != 5); // affiche une phrase de fin
if (nbessai <= 5 ) {
gotoxy(1,ligne + 1); cout<<"Bravo, vous avez reussi en", nbessai ," coups ! Vous êtes vraiment génial ! "; // compteur nbessai ne veux pas marcher
} else {
if (nbessai <= 10) {
gotoxy(1,ligne + 1);cout<<"Pas trop mal mon petit mais te reste encore des efforts.";
} else {
gotoxy(1,ligne + 1); cout<<"t'es vraiment bidon en faite !";
}
}
} |
Partager