Code:
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <windows.h>
#define AFFICHE 'A'
#define BRASSE 'B'
#define CLOCHE '\a'
#define TRI 'T'
#define FIN 27
enum Couleur {Coeur=3, Carreau, Trefle, Pique};
enum Valeur {Deux=2, Trois, Quatre, Cinq, Six, Sept, Huit, Neuf, Dix, Valet, Dame, Roi, As};
struct Carte
{
enum Valeur valeur ;
enum Couleur couleur ;
};
void fullscreen(void);
void initialiseJeu(struct Carte jeu[]);
void afficheJeu(struct Carte jeu []);
void brasseJeu(struct Carte jeu []);
void triJeu(struct Carte jeu []);
int menu(void);
//struct Carte carte, jeuCarte[52];
//enum Valeur valeur;
//enum Couleur couleur;
int main(int argc, char* argv[])
{
struct Carte jeuCarte[52];
int choix;
fullscreen();
randomize();
initialiseJeu(jeuCarte);
afficheJeu(jeuCarte);
do
{
choix = menu();
switch(choix)
{
case AFFICHE : putch(choix);
getch();
afficheJeu(jeuCarte);
getch();
break;
case BRASSE : putch(choix);
getch();
brasseJeu(jeuCarte);
break;
case TRI : putch(choix);
getch();
triJeu(jeuCarte);
break;
case FIN : break;
default : putch(CLOCHE);
}
} while (choix != FIN);
//system("pause");
return 0;
}
void initialiseJeu(struct Carte jeu[])
{
int i=0;
enum Couleur c;
enum Valeur v;
for (c=Coeur;c<=Pique;c=c+1)
{
for (v=Deux;v<=As;v=v+1)
{
jeu[i].couleur=c;
jeu[i].valeur=v;
i++;
}
}
}
void afficheJeu(struct Carte jeu [])
{
int i=0;
enum Couleur c;
enum Valeur v;
clrscr();
for (c=Coeur;c<=Pique;c=c+1)
{
for (v=Deux;v<=As;v=v+1)
{
/* if(jeu[i].couleur==Coeur || jeu[i].couleur==Carreau)
textcolor(RED);
else
textcolor(BLACK); */
switch(jeu[i].valeur)
{
case Valet : cprintf("%3c",'J');
break;
case Dame : cprintf("%3c",'D');
break;
case Roi : cprintf("%3c",'K');
break;
case As : cprintf("%3c",'A');
break;
default : cprintf("%3d",jeu[i].valeur);
break;
}
cprintf("%c",jeu[i].couleur);
i++;
}
cputs("\n\r");
}
}
void brasseJeu(struct Carte jeu [])
{
struct Carte c;
int i, j;
for (i=0;i<52;i++)
{
j=random(52);
c = jeu[i];
jeu[i] = jeu[j];
jeu[j] = c;
}
}
void triJeu(struct Carte jeu [])
{
int i = 0;
int j = 0;
int tmp = 0;
int permut;
permut = 1;
for(i = 0 ; (i < 52) && permut==1; i++)
{
permut = 0;
for(j = 1 ; j < 52 ; j++)
{
if(jeu[j].couleur < jeu[j-1].couleur)
{
tmp = jeu[j-1].couleur;
jeu[j-1].couleur = jeu[j].couleur;
jeu[j].couleur = tmp;
permut = 1;
}
else if(jeu[j].valeur < jeu[j-1].valeur)
{
tmp = jeu[j-1].valeur;
jeu[j-1].valeur = jeu[j].valeur;
jeu[j].valeur = tmp;
permut = 1;
}
}
}
}
int menu(void)
{
int touche;
clrscr();
//textbackground(BLUE);
//textcolor(RED);
gotoxy(33,5);
cputs("Jeu de cartes");
gotoxy(25,10);
cputs("Affiche le jeu de cartes");
gotoxy(25,15);
cputs("Brasse le jeu de cartes");
gotoxy(25,20);
cputs("Tri le jeu de cartes");
gotoxy(25,25);
cputs("Quitter le jeu de cartes");
cputs("(Esc)");
gotoxy(35,40);
cputs("Choix: ");
touche = toupper(getch());
return touche;
}
void fullscreen(void)
{
keybd_event(VK_MENU,0x38,0,0);
keybd_event(VK_RETURN,0x1c,0,0);
keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);
window(0,0,80,50);
}