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 120 121 122 123 124 125 126
| #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'}; // caractere autoriser
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 k, cp;
cp = 0;
for (k=0;k<5;k++){
if (VarCopie[k] == 'X'){ // permet d'éviter de recalculer dans le vide à chaque saisie
cp = cp + 1;
}else{
if (VarEssai[k] == VarCopie[k]){
cp = cp + 1; // compteur des coup bien place
VarCopie[k] = 'X';
}
}
}
return cp ;
}
int calculMP(typeformule VarEssai, typeformule VarCopie){ // fonction qui permet de verifier combien de coups sont mal place
int i, j, cl;
cl = 0;
for (i = 0; i < 5; i++){
if (VarCopie[i] == 'X'){
} else {
for (j = 0; j < 5; j++){
if (VarEssai[i] == VarCopie[j]){
cl = cl + 1; //compteur des coup mal place
VarEssai[i] = 'q';
VarCopie[j] = 'b';
}
}
}
}
return cl;
}
int main() {
typeformule VarCopie, VarEssai, VarOriginal ;
int x, y, i, nbessai, ligne;
char c;
int cp, cl ;
ligne = 11 ;// me permet de faire varier l'affichage de mes lignes (si je doit modifie l'affichage de n'importe quoi je modifie cette variable)
nbessai = 0; // initialise le nombre d'essai
gotoxy(25,1); // afficher une phrase de bienvenue
cout<<"Welcome to the MasterMind";
gotoxy(1,ligne - 8); // afficher la phrase d'accroche
cout<<"bleu = B, rouge = R, noir = N, vert = V, jaune = J, orange = O, gris = G "; // rappel des couleurs
gotoxy(1,ligne - 6); // 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,ligne - 6);
gotoxy(30+i*4,ligne - 6); cout<<"X"; // permet de cacher les lettre compose sans devoir effacer l'écran
// VarCopie prend les valeurs de VarOrignal
}
gotoxy (1,ligne - 4);
cout<<"Joueur deux veuillez trouver la combinaison";
gotoxy (55,ligne - 2);
cout<<"Bien place";
gotoxy (70,ligne - 2);
cout<<"Mal place";
do {
for(i=0;i<5;i++){
VarCopie[i] = VarOriginal[i] ; // VarCopie prend les valeurs de VarOrignal
}
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);
}
afficheValeur(59,ligne, calculBP(VarEssai, VarCopie)); // afficher le nombre de coup bien placer
afficheValeur(74,ligne, calculMP(VarEssai, VarCopie)); // affiche le nombre de coup mal plcer
nbessai ++;
ligne ++;
}while (calculBP(VarEssai, VarCopie) != 5);
if (nbessai <= 5 ) { // affiche une phrase de fin
gotoxy(1,ligne + 1);
cout<<"Bravo, vous avez reussi en " << nbessai << " coups !";
}else{ if (nbessai <= 10) {
gotoxy(1,ligne + 1);
cout<<"correct, vous avez reussi en " << nbessai << " coups !";
}else{
gotoxy(1,ligne + 1);
cout<<"decevant, vous avez reussi en " << nbessai << " coups !";
}
}
} |