#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)
{ 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 */
{
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)*/
{
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*/
/* else puissance=0 */
}
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[i][j])
{ 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);
/*********grille_vert(x1,y1,x2,y2);***********/
/*grille_hor(x1,y1,x2);**********************/
affichage(x1,y1,x2,y2);
/*les deux joueurs jouent a tour de role 1 pour l'humain 2 pour l'ordinateur */
/*joueur 1 matrice[i][j]==1 et joueur 2 matrice[i][j]==2*/
setcolor(0); /*noir--PC*/
circle(x1+20,y1+20,10); /*jeton dans la premiere case*/
init(i,j);
joueur=1;
tour_joueur=1;
do
{ clrscr();/*efface l'ecran*/
while (puissance!=4)
{
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();
}
clrscr(); /*closegraph();*/
printf("%d",joueur);
}
while ((remplie(matrice[i][j])==0);
clrscr();
printf("match nul");
getch();
}