Old stuff/ecole_etude_fac_de_pau/licence_2/poo/jeu.cc~
(Deskargatu)
/* tp 2
* Jeu ?
*
* Utilisation de :
* - tableau de cartes pour les solutions
* - tableau de cartes retournees pour les reponses
*******************************************************/
#include <iostream.h>
void afficher_jeu(char *tab,int n)
{
int i;
cout << "\e[0;0m\e[K\t\t";
for (i=1;i<n+1;i++)
{
cout << i << "\t";
}
cout << "\n\e[32;5m\e[K\t\t";
for (i=0;i<n;i++)
{
cout << tab[i] << "\t";
}
cout << "\e[0;0m\n";
}
void effacer()
{
cout << "\e[2J";
}
void creer_jeu(char *tab,int n)
{
char c='a';
for (int i=0;i<n;i++)
{
tab[i] = c;
tab[i+1] = c;
i=i+1;
c=c+1;
}
}
void random_jeu(char *tab,int n)
{
int pos;
char temp;
for (int i=0;i<n;i++)
{
pos = rand() % n;
temp = tab[i];
tab[i] = tab[pos];
tab[pos] = temp;
}
}
void creer_reponses(char *tab,int n)
{
for (int i=0;i<n;i++)
{
tab[i] = 'X';
}
}
int demander(char *reponses)
{
int pos;
do
{
cout << "\e[3AEntrer le numero de la carte a retourner : ";
cin >> pos;
}
while (reponses[pos-1] != 'X' );
return pos;
}
void retourner(char *cartes, char *reponses, int n)
{
reponses[n-1] = cartes[n-1];
}
int verifier(char *cartes,char *reponses,int a,int b)
{
if (cartes[a-1]==cartes[b-1])
{
reponses[a-1] = ' ';
reponses[b-1]= ' ';
}
else {
reponses[a-1] = 'X';
reponses[b-1]= 'X';
}
}
int fin_jeu(char *reponses,int n)
{
int ok=1;
for (int i=0;i<n;i++)
{
if (reponses[i] != ' ')
{
ok = 0;
}
}
return ok;
}
int main(void)
{
char *cartes;
char *reponses;
int nblm;
int carte_a;
int carte_b;
int k=0;
cout << "Entrez le nombre de paires de cartes a trouver : ";
cin >> nblm;
nblm*=2;
cartes = new char[nblm];
reponses = new char[nblm];
creer_jeu(cartes,nblm);
random_jeu(cartes,nblm);
creer_reponses(reponses,nblm);
effacer();
afficher_jeu(reponses,nblm);
for (k=1;! fin_jeu(reponses,nblm);k++)
{
carte_a = demander(reponses);
retourner(cartes,reponses,carte_a);
afficher_jeu(reponses,nblm);
carte_b = demander(reponses);
retourner(cartes,reponses,carte_b);
afficher_jeu(reponses,nblm);
verifier(cartes,reponses,carte_a,carte_b);
// afficher_jeu(reponses,nblm);
}
effacer();
afficher_jeu(cartes,nblm);
cout << "\n\nVous avez gagne en " << (k) << " essais !\n\n";
}