/****************************************************************************
	Sp‚cification	: 	Projet semestriel de I3 : Puissance 4
	Auteurs         : 	DarkChoupette
   				Ice Vador
****************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <graphics.h>

/* Nous d‚clarons le tableau en variable globale de maniŠre … ne pas avoir
   … le mettre en paramŠtre … chaque fois dans chaque fonction.
   Le grand int‚ret de la variable "player" est qu'elle regroupe en une seule
   variable le num‚ro du joueur ainsi que la couleur de son pion.
   "ligne" et "colonne" nous permettent d'afficher nos pions de maniŠre trŠs
   simples.                                                                */

int tab[6][7],player,ligne,colonne;

void affichage_grille(int game)
/* Sp‚cification : Cr‚ation de la grille du jeu */
{
	int pilote,mode,i;
	detectgraph(&pilote,&mode);

/* Pr‚paration de la table du jeu */

	initgraph(&pilote,&mode,"c:\\tc");
	setbkcolor(2);
	setcolor(10);
	rectangle(0,0,639,479);
	rectangle(1,1,638,478);

/* Construction de la grille */

	for(i=90;i<=390;i=i+50)
	{
		line(140,i,490,i);
		line(i+50,90,i+50,390);
	}
	line(490,90,490,390);

/* Am‚liorations graphiques */

	setcolor(8);
	line(139,90,139,390);
	line(491,90,491,390);
	line(139,391,491,391);

/* Ecran d'introduction du jeu */

	if(game==0)
	{
		setcolor(10);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 7);
		outtextxy(136, 1, "Puissance 4");
		line(136,73,494,73);
		line(136,75,494,75);
		player=1;
		setcolor(player);
		ligne=2;colonne=3;draw();
		ligne=2;colonne=5;draw();
		ligne=1;colonne=2;draw();
		ligne=1;colonne=4;draw();
		ligne=0;colonne=4;draw();
		ligne=0;colonne=5;draw();
		player=15;
		ligne=1;colonne=5;draw();
		ligne=0;colonne=1;draw();
		ligne=0;colonne=3;draw();
		for(i=0;i<13;i++)
		{
			if(i%2==0)
				player=15;
			else
				player=12;
			setcolor(player);
			ligne=3;colonne=5;draw();
			ligne=2;colonne=4;draw();
			ligne=1;colonne=3;draw();
			ligne=0;colonne=2;draw();
			delay(700);
		}
	}
}


void regles()
/* Sp‚cification : Affichage des rˆgles du puissance 4 … l'‚cran */
{
	int i,j;
	cleardevice();
	setbkcolor(2);
	setcolor(10);
	rectangle(0,0,639,479);
	rectangle(1,1,638,478);
	settextstyle(TRIPLEX_FONT, HORIZ_DIR, 7);
	outtextxy(136, 1, "Puissance 4");
	line(136,73,494,73);
	line(136,75,494,75);
	settextstyle(TRIPLEX_FONT, HORIZ_DIR, 3);
	outtextxy(10,85, "Regles du jeu :");
	settextstyle(TRIPLEX_FONT, HORIZ_DIR, 1);
	outtextxy(10,125, "Le but du jeu est d'aligner 4 pions consecutivement de la meme");
	outtextxy(10,145,"couleur. Vous pouvez les aligner horizontalement, verticalement");
	outtextxy(10,165,"et en diagonal..");
	outtextxy(10,185,"Vous deplacez votre pion avec les touches 1 et 3 du pave");
	outtextxy(10,205,"numerique. Pour valider votre choix appuyer sur la touche ESPACE.");
	outtextxy(250,240,"Bon courage :)");
	outtextxy(410,450,"Appuyez sur une touche.");
	getch();

/* Initialisation du tableau de jeu */

	flushall();
	for(i=0;i<6;i++)
		for(j=0;j<7;j++)
			tab[i][j]=0;
	affichage_grille(1);
	jeu();
}


int jeu()
/* Sp‚cification : Lance le jeu … proprement parl‚ */
{
	int coups=1;
	while(coups!=43)
	{
		joueur();
		etat();
		player=1;
		if(recherche_3h()!=1)
		  if(recherche_3v()!=1)
		    if(recherche_3_1d()!=1)
		      if(recherche_3_2d()!=1)
		      {
			player=15;
			if(recherche_3h()!=1)
			  if(recherche_3v()!=1)
			    if(recherche_3_1d()!=1)
		    	      if(recherche_3_2d()!=1)
			      {
				player=1;
				if(recherche_2h()!=1)
				  if(recherche_2v()!=1)
				    if(recherche_2_1d()!=1)
				      if(recherche_2_2d()!=1)
				      {
					player=15;
					if(recherche_2h()!=1)
					  if(recherche_2v()!=1)
					    if(recherche_2_1d()!=1)
					      if(recherche_2_2d()!=1)
					      {
						 player=1;
						 if(recherche_1()!=1)
						 {
						   player=15;
						   if(recherche_1()!=1)
						   {
						     player=1;
						     au_pif();
						   }
						 }
					     }
			     	     }
		    	     }
		       }
		tab[ligne][colonne]=player;
		draw();
		etat();		
	}
	return(0);
}


int joueur()
/* Sp‚cification : Permet au joueur de choisir sa colonne */
{
	int tampon,box=0;
	player=15;
	ligne=6;colonne=0;draw();
	do
	{
		while((tab[ligne-1][colonne]!=0)||(colonne==6))
			colonne=colonne+1;
		if((getch()==51)&&(tab[ligne-1][colonne+1]!=0)&&(colonne>=6))
		{
			tampon=colonne;
			player=2;
			draw();
			do
			{
				colonne=colonne+1;
			}
			while((tab[ligne-1][colonne+1]!=0)||(colonne==6));
			if(colonne==6)
				colonne=tampon;
		}
		if((getch()==49)&&(tab[ligne-1][colonne-1]!=0)&&(colonne>=0))
		{
			tampon=colonne;
			player=2;
			draw();
			do
			{
				colonne=colonne-1;
			}
			while((tab[ligne-1][colonne-1]!=0)||(colonne==0));
			if(colonne==0)
				colonne=tampon;
			colonne=colonne-1;
		}
		if((getch()==49)&&(colonne!=0))
		{
			player=15;
			colonne--;
			draw();
			tampon=colonne;
			colonne++;
			player=2;
			draw();
			colonne=tampon;
		}
		if((getch()==51)&&(colonne!=6))
		{
			player=15;
			colonne++;
			draw();
			tampon=colonne;
			colonne--;
			player=2;
			draw();
			colonne=tampon;
		}
	}
	while((getch()!=32)&&(tab[ligne-1][colonne]==0));
	player=2;
	draw();
	while(tab[box][colonne]!=0)
		box++;
	ligne=box;player=15;
	tab[ligne][colonne]=player;
	draw();
	return(0);
}




int recherche_3h()
/* Sp‚cification : Recherche de 3 pions align‚s horizontalements et
		   cons‚cutivements.	       				*/
{
	int i,j;
	for(i=0;i<6;i++)
	{
		for(j=0;j<4;j++)
		{
			if((tab[i][j]==player)&&(tab[i][j+1]==player)&&(tab[i][j+2]==player))
			{
				if((j==0)&&(tab[i][j+3]==0))
				{
					
					if(i==0)
					{
						if(player==15)
							player=1;
						tab[i][j+3]=player;
						ligne=i;
						colonne=j+3;
						return(1);
					}
					if((i!=0)&&(tab[i-1][j+3]!=0))
					{
						if(player==15)
							player=1;
						tab[i][j+3]=player;
						ligne=i;
						colonne=j+3;
						return(1);
					}
				}
				if((j>=1)&&(j<=3))
				{
					if(tab[i][j-1]==0)
					{
						if(i==0)
						{
							if(player==15)
								player=1;
							tab[i][j-1]=player;
							ligne=i;
							colonne=j-1;
							return(1);
						}
						if((i!=0)&&(tab[i-1][j-1]!=0))
						{
							if(player==15)
								player=1;
							tab[i][j-1]=player;
							ligne=i;
							colonne=j-1;
							return(1);
						}
					}
					if(tab[i][j+3]==0)
					{
						if(i==0)
						{
							if(player==15)
								player=1;
							tab[i][j+3]=player;
							ligne=i;
							colonne=j+3;
							return(1);
						}
						if((i!=0)&&(tab[i-1][j+3]!=0))
						{
							if(player==15)
								player=1;
							tab[i][j+3]=player;
							ligne=i;
							colonne=j+3;
							return(1);
						}

					}
				}
				if((j==4)&&(tab[i][j-1]==0))
				{
					if(i==0)
					{
						if(player==15)
							player=1;
						tab[i][j-1]=player;
						ligne=i;
						colonne=j-1;
						return(1);
					}
					if((i!=0)&&(tab[i-1][j-1]!=0))
					{
						if(player==15)
							player=1;
						tab[i][j-1]=player;
						ligne=i;
						colonne=j-1;
						return(1);
					}
				}
			}
		}
	}
	return(0);
}

int recherche_3v()
/* Recherche de 3 pions align‚s verticalements */
{
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<7;j++)
		{
			if((tab[i][j]==player)&&(tab[i+1][j]==player)&&(tab[i+2][j]==player)&&(tab[i+3][j]==0))
			{
				if(player==15)
					player=1;
				tab[i+3][j]=player;
				ligne=i+3;
				colonne=j;
				return(1);
			}
		}
	}
	return(0);
}


int recherche_3_1d()
/* Sp‚cification : Recherche de 3 pions align‚s en diagonale -> diagonale
		   montante.                                               */
{
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			if((tab[i][j]==player)&&(tab[i+1][j+1]==player)&&(tab[i+2][j+2]==player)&&(tab[i+3][j+3]==0))
			{
				if(tab[i+2][j+3]!=0)
				{
					if(player==15)
						player=1;
					tab[i+3][j+3]=player;
					ligne=i+3;
					colonne=j+3;
					return(1);
				}
			}
		}
	}
	for(i=3;i<6;i++)
	{
		for(j=3;j<7;j++)
		{
			if((tab[i][j]==player)&&(tab[i-1][j-1]==player)&&(tab[i-2][j-2]==player)&&(tab[i-3][j-3]==0))
			{
				if(i==3)
				{
					if(player==15)
						player=1;
					tab[i-3][j-3]=player;
					ligne=i-3;
					colonne=j-3;
					return(1);
				}
				if((i!=3)&&(tab[i-4][j-3]!=0))
{
					if(player==15)
						player=1;
					tab[i-3][j-3]=player;
					ligne=i-3;
					colonne=j-3;
					return(1);
				}
			}
		}
	}
	return(0);
}



int recherche_3_2d()
/* Sp‚cification : Recherche de 3 pions align‚s en diagonale -> diagonale
		   descendante.                                              */
{
	int i,j;
	for(i=3;i<6;i++)
	{
		for(j=0;j<4;j++)
			if((tab[i][j]==player)&&(tab[i-1][j+1]==player)&&(tab[i-2][j+2]==player)&&(tab[i-3][j+3]==0))
			{
				if(i==3)
				{
					if(player==15)
						player=1;
					tab[i-3][j+3]=player;
					ligne=i-3;
					colonne=j+3;
					return(1);
				}
				if((i!=3)&&(tab[i-4][j+3]!=0))
				{
					if(player==15)
						player=1;
					tab[i-3][j+3]=player;
					ligne=i-3;
					colonne=j+3;
					return(1);
				}
			}
	}
	for(i=0;i<3;i++)
	{
		for(j=3;j<7;j++)
			if((tab[i][j]==player)&&(tab[i+1][j-1]==player)&&(tab[i+2][j-2]==player)&&(tab[i+3][j-3]==0))
			{
				if(tab[i+2][j-3]!=0)
				{
					if(player==15)
						player=1;
					tab[i+3][j-3]=player;
					ligne=i+3;
					colonne=j-3;
					return(1);
				}
			}
	}
	return(0);
}



int recherche_2h()
/* Sp‚cification : Recherche de 2 pions align‚s horizontalements */
{
	int i,j;
	for(i=0;i<6;i++)
	{
		for(j=0;j<6;j++)
		{
			if((tab[i][j]==player)&&(tab[i][j+1]==player))
			{
				if((j==0)&&(tab[i][j+2]==0))
				{
					if(i==0)
					{
						if(player==15)
							player=1;
						tab[i][j+2]=player;
						ligne=i;
						colonne=j+2;
						return(1);
					}
					if((i!=0)&&(tab[i-1][j+2]!=0))
					{
						if(player==15)
							player=1;
						tab[i][j+2]=player;
						ligne=i;
						colonne=j+2;
						return(1);
					}
				}
				if((j>=1)&&(j<5))
				{
					if(tab[i][j-1]==0)
					{
						if(i==0)
						{
							if(player==15)
								player=1;
							tab[i][j-1]=player;
							ligne=i;
							colonne=j-1;
							return(1);
						}
						if((i!=0)&&(tab[i-1][j-1]!=0))
						{
							if(player==15)
								player=1;
							tab[i][j-1]=player;
							ligne=i;
							colonne=j-1;
							return(1);
						}
					}
					if(tab[i][j+2]==0)
					{
						if(i==0)
						{
							if(player==15)
								player=1;
							tab[i][j+2]=player;
							ligne=i;
							colonne=j+2;
							return(1);
						}
						if((i!=0)&&(tab[i-1][j+2]!=0))
						{
							if(player==15)
								player=1;
							tab[i][j+2]=player;
							ligne=i;
							colonne=j+2;
							return(1);
						}
					}
				}
				if((j==5)&&(tab[i][j-1]==0))
				{
					if(i==0)
					{
						if(player==15)
							player=1;
						tab[i][j-1]=player;
						ligne=i;
						colonne=j-1;
						return(1);
					}
					if((i!=0)&&(tab[i-1][j-1]!=0))
					{
						if(player==15)
							player=1;
						tab[i][j-1]=player;
						ligne=i;
						colonne=j-1;
						return(1);
					}
				}
			}
		}
	}
	return(0);
}


int recherche_2v()
/* Sp‚cification : Recherche de deux pions align‚s verticalements */
{
	int i,j;
	for(i=0;i<4;i++)
	{
		for(j=0;j<7;j++)
		{
			if((tab[i][j]==player)&&(tab[i+1][j]==player)&&(tab[i+2][j]==0))
			{
				if(player==15)
					player=1;
				tab[i+2][j]=player;
				ligne=i+2;
				colonne=j;
				return(1);
			}
		}
	}
	return(0);
}



recherche_2_1d()
/* Sp‚cification : Recherche de 2 pions align‚s en diagonale -> diagonale
		   montante.                                               */
{
	int i,j;
	for(i=0;i<4;i++)
	{
		for(j=0;j<5;j++)
			if((tab[i][j]==player)&&(tab[i+1][j+1]==player)&&(tab[i+2][j+2]==0))
			{
				if(tab[i+1][j+2]!=0)
				{
					if(player==15)
						player=1;
					tab[i+2][j+2]=player;
					ligne=i+2;
					colonne=j+2;
					return(1);
				}
			}
	}
	return(0);
}



int recherche_2_2d()
/* Sp‚cification : Recherche de 2 pions align‚s en diagonale -> diagonale
		   descendante.                                              */
{
	int i,j;
	for(i=2;i<6;i++)
	{
		for(j=2;j<7;j++)
			if((tab[i][j]==player)&&(tab[i-1][j-1]==player)&&(tab[i-2][j-2]==0))
			{
				if(i==2)
				{
					if(player==15)
						player=1;
					tab[i-2][j-2]=player;
					ligne=i-2;
					colonne=j-2;
					return(1);
				}
				if((i!=2)&&(tab[i-3][j-2]!=0))
				{
					if(player==15)
						player=1;
					tab[i-2][j-2]=player;
					ligne=i-2;
					colonne=j-2;
					return(1);
				}
			}
	}
	return(0);
}



int recherche_1()
/* Sp,cification : recherche d'un pion isole */
{
	int i,j;
	for(i=0;i<6;i++)
	{
		for(j=0;j<7;j++)
		{
			if((tab[i][j]==player)&&(j==0)&&(tab[i][j+1]==0))
			{
				if(i==0)
				{
					if(player==15)
						player=1;
					tab[i][j+1]=player;
					ligne=i;
					colonne=j+1;
					return(1);
				}
				if((i!=0)&&(tab[i-1][j+1]!=0))
{
					if(player==15)
						player=1;
					tab[i][j+1]=player;
					ligne=i;
					colonne=j+1;
					return(1);
				}
			}
			if((tab[i][j]==player)&&(j==0)&(i<=4)&&(tab[i+1][j]==0))
			{
				if(player==15)
					player=1;
				tab[i+1][j]=player;
				ligne=i+1;
				colonne=j;
				return(1);
			}
			if((tab[i][j]==player)&&(j==0)&(i<=4)&&(tab[i+1][j+1]==0))
			{
				if(i==0)
				{
					if(player==15)
						player=1;			
					tab[i+1][j+1]=player;
					ligne=i+1;
					colonne=j+1;
					return(1);
				}
				if((i!=0)&&(tab[i][j+1]!=0))
				{
					if(player==15)
						player=1;			
					tab[i+1][j+1]=player;
					ligne=i+1;
					colonne=j+1;
					return(1);
				}
			}
			if((tab[i][j]==player)&&(j==0)&(i>0)&&(tab[i-1][j+1]==0))
			{
				if(i==1)
				{
					if(player==15)
						player=1;			
					tab[i-1][j+1]=player;
					ligne=i-1;
					colonne=j+1;
					return(1);
				}
				if((i>1)&&(tab[i-2][j-1]!=0))
				{
					if(player==15)
						player=1;			
					tab[i+1][j+1]=player;
					ligne=i+1;
					colonne=j+1;
					return(1);
				}
			}
			if((tab[i][j]==player)&&(j>=1)&&(j<=5))
			{
				if(tab[i][j-1]==0)
				{
					if(i==0)
					{
						if(player==15)
							player=1;
						tab[i][j-1]=player;
						ligne=i;
						colonne=j-1;
						return(1);
					}
					if((i!=0)&&(tab[i-1][j-1]!=0))
					{
						if(player==15)
							player=1;
						tab[i][j-1]=player;
						ligne=i;
						colonne=j-1;
						return(1);
					}
				}
				if(tab[i][j+1]==0)
				{
					if(player==15)
						player=1;
					tab[i][j+1]=player;
					ligne=i;
					colonne=j+1;
					return(1);
				}
				if((tab[i+1][j-1]==0)&&(i<=4)&&(tab[i][j-1]!=0))
				{
					if(player==15)
						player=1;
					tab[i+1][j-1]=player;
					ligne=i+1;
					colonne=j-1;
					return(1);
				}
				if((tab[i+1][j]==0)&&(i<=4))
				{
					if(player==15)
						player=1;
					tab[i+1][j]=player;
					ligne=i+1;
					colonne=j;
					return(1);
				}
				if((tab[i+1][j+1]==0)&&(i<=4))
				{
					if(i==0)
					{
						if(player==15)
							player=1;
						tab[i+1][j+1]=player;
						ligne=i+1;
						colonne=j+1;
						return(1);
					}
					if((i!=0)&&(tab[i-1][j+1]!=0))
					{
						if(player==15)
							player=1;
						tab[i+1][j+1]=player;
						ligne=i+1;
						colonne=j+1;
						return(1);
					}
				}
			}
			if((tab[i][j]==player)&&(j==5)&&(tab[i][j-1]==0))
			{
				if(i==0)
				{
					if(player==15)
						player=1;
					tab[i][j-1]=player;
					ligne=i;
					colonne=j-1;
					return(1);
				}
				if((i!=0)&&(tab[i-1][j-1]!=0))
				{
					if(player==15)
						player=1;
					tab[i][j-1]=player;
					ligne=i;
					colonne=j-1;
					return(1);
				}
			}
			if((tab[i][j]==player)&&(j==5)&(i<=4))
			{
				if(tab[i+1][j]==0)
				{
					if(player==15)
						player=1;
					tab[i+1][j]=player;
					ligne=i+1;
					colonne=j;
					return(1);
				}
				if((tab[i+1][j-1]==0)&&(tab[i][j-1]!=0))
				{
					if(player==15)
						player=1;
					tab[i+1][j-1]=player;
					ligne=i+1;
					colonne=j-1;
					return(1);
				}
			}
			if((tab[i][j]==player)&&(j==5)&&(i>0)&&(tab[i-1][j-1]==0))
			{
				if(i==1)
				{
					if(player==15)
						player=1;
					tab[i-1][j-1]=player;
					ligne=i-1;
					colonne=j-1;
					return(1);
				}
				if((i>1)&&(tab[i-2][j-1]!=0))
				{
					if(player==15)
						player=1;
					tab[i-1][j-1]=player;
					ligne=i-1;
					colonne=j-1;
					return(1);
				}
			}
		}
	}
	return(0);
}





int au_pif()
/* Sp‚cification : Place un pion au pif */
{
	int i=0;
	colonne=rand()%7;
	while(tab[i][colonne]!=0)
		i++;
	ligne=i;
	return(1);
}




int draw()
/* Sp‚cification : Dessine le pion du joueur au bon endroit et de la bonne
		   couleur.                                                */
{
	setcolor(player);
	setfillstyle(1,player);
	circle(165+50*colonne,365-50*ligne,20);
	floodfill(165+50*colonne,365-50*ligne,player);
	return(0);
}


int match_nul()
/* Sp‚cification : Recherche s'il y a match nul ou pas */
{
	if((tab[5][0]!=0)&&(tab[5][1]!=0)&&(tab[5][2]!=0)&&(tab[5][3]!=0)&&(tab[5][4]!=0)&&(tab[5][5]!=0)&&(tab[5][6]!=0))
		return(3);
	else
		return(0);
}



int gagne()
/* Sp‚cification : Recherche du joueur gagnant */
{
	int i,j;

/* Recherche horizontale */

	for(i=0;i<6;i++)
	{
		for(j=0;j<4;j++)
		{
			if((tab[i][j]==player)&&(tab[i][j+1]==player)&&(tab[i][j+2]==player)&&(tab[i][j+3]==player))
				return(player);
		}
	}

/* Recherche verticale */

	for(i=0;i<3;i++)
	{
		for(j=0;j<7;j++)
		{
			if((tab[i][j]==player)&&(tab[i+1][j]==player)&&(tab[i+2][j]==player)&&(tab[i+3][j]==player))
				return(player);
		}
	}

/* Recherche de la premiŠre diagonale -> la montante */

	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
		{
			if((tab[i][j]==player)&&(tab[i+1][j+1]==player)&&(tab[i+2][j+2]==player)&&(tab[i+3][j+3]==player))
				return(player);
		}
	}

/* Recherche de la deuxiŠme diagonale -> la descendante */

	for(i=3;i<6;i++)
	{
		for(j=0;j<4;j++)
		{
			if((tab[i][j]==player)&&(tab[i-1][j+1]==player)&&(tab[i-2][j+2]==player)&&(tab[i-3][j+3]==player))
				return(player);
		}
	}
	return(0);
}

int etat()
/* Sp‚cification : Fait l'‚tat du jeux aprŠs chaques joueur */
{

/* Cas du match nul */

	if(match_nul()==3)
	{
		delay(2000);
		cleardevice();
		setbkcolor(2);
		setcolor(10);
		rectangle(0,0,639,479);
		rectangle(1,1,638,478);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 7);
		outtextxy(136, 1, "Puissance 4");
		line(136,73,494,73);
		line(136,75,494,75);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 3);
		outtextxy(10,85, "Match Nul..");
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 1);
		outtextxy(10,125,"En fait il n\'y a pas que le match qui soit nul.. Ne pas arriver");
		outtextxy(10,145,"a battre un programe aussi simple ca la fout mal je trouve..");
		outtextxy(10,185,"Allez, retentez votre chance et essayez de faire mieux cette fois...");
		outtextxy(410,450,"Appuyez sur une touche.");
		getch();
		interface();
	}

/* Cas de la victoire de l'ordi */

	if((gagne()==player)&&(player==1))
	{
		delay(2000);
		cleardevice();
		setbkcolor(2);
		setcolor(10);
		rectangle(0,0,639,479);
		rectangle(1,1,638,478);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 7);
		outtextxy(136, 1, "Puissance 4");
		line(136,73,494,73);
		line(136,75,494,75);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 3);
		outtextxy(10,85, "L'ordi a gagne!!!");
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 1);
		outtextxy(10,125, "Si j\'etais vous je n\'en mennerai pas large..");
		outtextxy(10,165,"Allez, retentez voter chance et essayez de faire mieux cette fois...");
		outtextxy(410,450,"Appuyez sur une touche.");
		getch();
		interface();
	}

/* Cas de la victoire du joueur */

	if((gagne()==player)&&(player==15))
	{
		delay(2000);
		cleardevice();
		setbkcolor(2);
		setcolor(10);
		rectangle(0,0,639,479);
		rectangle(1,1,638,478);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 7);
		outtextxy(136, 1, "Puissance 4");
		line(136,73,494,73);
		line(136,75,494,75);
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 3);
		outtextxy(10,85, "Vous avez gagne!!!");
		settextstyle(TRIPLEX_FONT, HORIZ_DIR, 1);
		outtextxy(10,125, "Mouai mouai... Surement un coup de bol..");
		outtextxy(10,165,"Oserez-vous rejouer encore une fois... ???");
		outtextxy(410,450,"Appuyez sur une touche.");
		getch();
		interface();
	}
	return(0);
}


int interface()
/* Sp‚cification : Petite interface du jeu */
{
	int choix=0;
	cleardevice();
	setbkcolor(2);
	setcolor(10);
	rectangle(0,0,639,479);
	rectangle(1,1,638,478);
	settextstyle(TRIPLEX_FONT, HORIZ_DIR, 7);
	outtextxy(136, 1, "Puissance 4");
	line(136,73,494,73);
	line(136,75,494,75);
	settextstyle(TRIPLEX_FONT, HORIZ_DIR, 3);
	outtextxy(10,85, "Que voulez-vous faire?");
	settextstyle(TRIPLEX_FONT, HORIZ_DIR, 1);
	outtextxy(10,125, "1            : Faire une partie");
	outtextxy(10,145, "Autre touche : Quitter le jeu");
	choix=getch();
	if(choix==49)
	{
		regles();
		return(1);
	}
	else
		exit(0);
	return(0);
}



main()
/* Sp‚cification : Fonction principale */
{
	int game=0;
	affichage_grille(game);
	interface();
	return(0);
}

