#include "types.h"
#include "Tests.h"


int EvaluerLigne(Tgrille &grille,int &joueur)
  //compte le nombre de pions alignés (contigüs ou non) et non condamnés 
  //n'abrège pas le test en cas de détection de victoire :ce n'est pas le but
{
  int i,j,debut,align,total,parcouru,k;
  total=0;

  for (i=0;i<6;i++)
    {
      align=0;parcouru=0;
      for (j=0;j<7;j++) 
	{
	  switch (grille[i][j])
	    {
	    case 0:
	      //debut=0;total=total+align;align=0;
	      parcouru++;
	      break;
	    case 1:
	    case 2:
	      if  (grille[i][j]==joueur) 
		{
		  //a remettre: transparence et non influence sur la facon de jouer 
		  //de l'ordi si on peut aller jusqu'au niveau 7 pour envisager la victoire
		  //align++;parcouru++ ;
		  //provisoire: pour le guider jusque là
		  parcouru++;align=2*align;align++;
		} 
	      else //pion autre joueur 
		{
		  if (align==0) {parcouru=0;}
		  else
		    {
		      if (parcouru<4) {align=0;parcouru=0;}
		      else {total=total+align;align=0;parcouru=0;}
		    }
		} //fin autre joueur
	      break;
	    default:
	      cout<<"Erreur!"<<endl;
	    }
	} //fin prem for
      if (parcouru>=4) {total=total+align;}
    } //fin  dernier for
  
  return(total);
}



int EvaluerColonne(Tgrille &grille,Tcard &card,int &joueur,int &victoire)
  //renvoie le nombre de pions alignés en colonne (non condamnés)
  //Teste aussi l'état de victoire car il est inutile ICI  d'opérer des tests redondants
{
  int i,j,align,total,score;
  total=0;victoire=0;
  
  for (j=0;j<7;j++)
    {
      align=0;score=0;
      for (i=0;i<card[j];i++)
	{
	  if (grille[i][j]==joueur)  //pion ami
	    {
	      //non dirigiste:
	      //score++ 
	      //guide vers victoire:
	      score=2*score;score++;
	      align++;
	      if (align==4) { victoire=1;return(999999);}
	      //15 = 4 pions
	    }
	  else //pion ennemi
	    {
	      if (align<4) {align=0;score=0;} else {total=total+score;align=0;score=0;}
	    }
	}//fin premier for: fin de colonne
      if ((i-1-align)<=1)  {total=total+score;align=0;score=0;} else {align=0;score=0;}
    }//fin 2 eme for: colonne suivante
  
  return(total);
}



int TesterLigne(Tgrille &grille,int &joueur)
  //Teste s'il y a 4 pions alignés et contigus 
{
  
  int i,j,debut,align,total,parcouru;
  total=0;
  
  for (i=0;i<6;i++)
    {
      align=0;
      for (j=0;j<7;j++) 
	{
	  switch (grille[i][j])
	    {
	    case 0:
	      align=0;
	      break;
	    case 1:
	    case 2:
	      if  (grille[i][j]==joueur) 
		{
		  align++; if (align==4) { return(1); } 
		}
	      else //pion autre joueur 
		{
		  align=0;
		} //fin autre joueur
	      break;
	    default:
	      cout<<"Erreur!"<<endl;
	    }
	} //fin prem for
    } //fin  dernier for
  
  return(0);
}




















