*le but du jeu puissance 4 est d'afficher 4 pions verticalement */
/*horizontalement ou diagonalement*/
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<alloc.h>
int matrice[10][10];
# define taille 10
int tour_joueur;
int x;
int y;
int r;
int i;
int j;
int puissance;
int joueur;
int x1,y1,x2,y2;
/**********************************************************************************/
void affichage (int x1,int y1,int x2)
/*specif:affichage de l'aire de jeu:grille 10*10*/
{ int j,m;
int i,k;
m=0;
k=0;
for(j=0;j<taille;j=j+1)
{line(x1,y1+m,x2,y1+m);
m=m+40;
}
for(i=0;i<taille;i=i+1)
{line(x1+k,y1,x1+k,y2);
k=k+40;
}
}
/***********************************************************************************/
/*m---->nombre de lignes */ /*n-->nombre d colonnes*/
void init(int i,int j)
/*initialisation a vide la matrice*/
{ for(i=0;i<10;i++)/*i=0--->matrice[0][j] cases 1ere ligne */
for(j=0;j<10;j++)
{matrice[i][j]==0;}
}
/************************************************************************************/
void pion( int x,int y,int r)
/*specif:cette procedure dessine le jeton et le place dans la colonne correspondante tant qu'elle est pas remplie */
{
int i,ligne;
int col;
i=taille-1; /******************i=9**********/
do {
clrscr();
printf("choisir la colonne");
scanf("%d",&col);
}
while((col<0)&&(col>taille));
while (matrice[i][j]!=0)
{
i--;
}
ligne=i;
if(joueur==1)
{ matrice[i][j]=2;
setcolor(0);
circle(x+(col*20),y+(ligne*20),r);/*on place le jeton dans la premiere case vide de la colonne choisie*/
}
else { matrice[i][j]=1;
setcolor(15);
circle(x+(col*20),y+(ligne*20),r);
}
}
/**********************************************************************************/
int test_vertical()
/*specif:matrice[i][j]==1-->coup du joueur 1 sinon matrice[i][j]=2 alors coup du joueur 2(pc)*/
/*specif:teste s'il ya 4 pions alignes
{
int puissance;
for(i=0;i<=taille-3;i++)
for(j=0;j<=taille-1;j++)
{ if ((matrice[i][j]==matrice[i+1][j]) &&( matrice[i+1][j]==matrice[i+2][j])
&& (matrice[i+2][j]==matrice[i+3][j]))
{
puissance=4;
} /*puissance 4*/
}
return(puissance);
}
/************************************************************************************/
int test_diagonale_nord_est()
{
int puissance;
for(i=0;i<taille-3;i++)
{ for(j=0;j<taille-3;j++)
if((matrice[i][j]==matrice[i+1][j+1])&&(matrice[i+1][j+1]==matrice[i+2][j+2])
&&(matrice[i+2][j+2]==matrice[i+3][j+3])) /*return(4); */
{
puissance=4;
}
} /*else puissance=0;*/
return(puissance);
}
/***********************************************************************************/
int test_diagonale_sud_est()
{
int puissance;
for(i=taille-1;i>=3 ;i--)
for(j=0;j<taille-3;j++)
if((matrice[i][j]==matrice[i-1][j+1])&&(matrice[i-1][j+1]==matrice[i-2][j+2])
&&(matrice[i-2][j+2]==matrice[i-3][j+3])) /*return(4);*/
{ puissance=4;}
else puissance=0;
return(puissance);
}
/***********************************************************************************/
int test_horizontal()
{
int puissance;
for(i=0;i<=taille-1;i++)
{ for(j=0;j<=3;j++)
if ((matrice[i][j]==matrice[i][j+1])&&(matrice[i][j+1]==matrice[i][j+2])
&&(matrice[i][j+2]==matrice[i][j+3]))
{
puissance=4;
}
else puissance=0;
}
return(puissance);
}
/***********************************************************************************/
int remplie(int matrice[10][10])
{ int i,j;
int remplie;
for(i=0;i<=taille-1;i++)
{ for(j=0;j<taille-1;j++)
{ if(matrice[i][j]!=0)
{ remplie=remplie+1;
/*remplie==0;*/
}
}
return(remplie);
}
/****************************************************************************************/
main()
{
int x1,y1,x2,y2;
int pilote,mode;
clrscr(); /*efface l'ecran*/
x1=100;
y1=50;
x2=500;
y2=450;
r=20;
detectgraph(&pilote,&mode);
initgraph(&pilote,&mode,"i:\tc");
rectangle(x1,y1,x2,y2);
affichage(x1,y1,x2,y2);
setbkcolor(1); /*bleu comme couleur de fond d'ecran*/
init(i,j);
do
{ clrscr();/*efface l'ecran*/
do
{
pion(x,y,r); /***************clrscr();***************/
joueur=joueur-3;/*alterner les joueurs*/
/*coup joueur();*/
test_vertical();
test_diagonale_sud_est();
test_horizontal();
test_diagonale_nord_est();
}
while (puissance!=4)
closegraph();/*clrscr()*/
printf("%d",joueur);
}
while ((remplie(matrice[10][10])==0));
/**********printf("le joueur %d a gagne\n",joueur");*********/
/*if(remplie==1)&&(joueur_gagnant!=1)&&(joueur gagnant!=2)*****/
closegraph();/*clrscr();*/
printf("match nul");
getch();
}