#include <iostream.h>
#include <stdlib.h>
#include <time.h>

const int dim=30;

int main()

{
  
  char A='q',B='q',C='q',D='q',E='q',F='q',G='q',H='q',I='q';
  
  int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,k=0;
  int ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,kc =0; 
  
  char as,bs,cs,ds,es,fs,gs,hs,is;

  char scelta;
  cout<<endl;
  
  int var;

  do 
    
    {
    //giocate possibili

  
    char gioco;

    //giocate possibili

    char gioca,computer;
    char* disegno[dim][dim];
    int numero,x,y;

    for(int i=0;i<dim;i++)
      {
	for(int j=0;j<dim;j++)
	  {
	    disegno[i][j]="  ";
	    
	    if(i==0||i==dim-1||j==0||j==dim-1)
	      
	      {
		disegno[i][j]=" .";
	      }
	    
	    if((i==dim/3)||(i==dim/3*2))
	      {
		disegno[i][j]=" *";
	      }
	    if((j==dim/3)||(j==dim/3*2))	
	      {
		disegno[i][j]=" *";
	      }
	  }
	
      }
  
    do
      
      {


	if(A=='q')
	  {
	    as='a';
	  }
	if(A=='a')
	  {
	    as=' ';
	  }
	
	if(B=='q')
	  {
	    bs='b';
	  }
	if(B=='b')
	  {
	    bs=' ';
	  }
	
	if(C=='q')
	  {
	    cs='c';
	  }
	if(C=='c')
	  {
	    cs=' ';
	  }
	
	if(D=='q')
	  {
	    ds='d';
	  }
	if(D=='d')
	  {
	    ds=' ';
	  }
	
	if(E=='q')
	  {
	    es='e';
	  }
	if(E=='e')
	  {
	    es=' ';
	  }
	
	if(F=='q')
	  {
	    fs='f';
	  }
	if(F=='f')
	  {
	    fs=' ';
	  }
	
	if(G=='q')
	  {
	    gs='g';
	  }
	if(G=='g')
	  {
	    gs=' ';
	  }
	
	if(H=='q')
	  {
	    hs='h';
	  }
	if(H=='h')
	  {
	    hs=' ';
	  }
	
	if(I=='q')
	  {
	    is='i';
	  }
	if(I=='i')
	  {
	    is=' ';
	  }


	cout<<"dove giochi? scegli tra :\n\n\n\t"<<as<<"\t"<<bs<<"\t"<<cs
	    <<"\n\n\n\t"<<ds<<"\t"<<es<<"\t"<<fs<<"\n\n\n\t"<<gs<<"\t"<<hs<<"\t"<<is;
	cout<<endl<<endl;
	cin>>gioco;
	cout<<endl<<endl;
	
	switch(gioco)
	  
	  {
	  case 'a':
	  
	    A='a';
	    
	    a=1;
	    
	    for(int i=0;i<dim;i++)
	      
	      {
		for(int j=0;j<dim;j++)
		  
		  {
		    x=i;
		    y=j;
		    
		    if((y==x)&&(y<dim/3-1)&&(y>1))
		      {
			disegno[i][j]=" *";
		      }
		    if (y==-x+dim/3&&(x<dim/3-1)&&(x>1))
		      {
			disegno[i][j]=" *";
		      }
		    
		  }
	      };break;
	    
	case 'b':
	  
	  B='b';
	  
	  b=2;
	  
	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x+dim/3)&&(y<dim/3*2-1)&&(y>dim/3+1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+(dim/3)*2&&(x<dim/3-1)&&(x>1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	case 'c':
	  
	  C='c';

	  c=3;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x+dim/3*2)&&(y<dim-1)&&(y>dim/3*2+1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+dim&&(x<dim/3-1)&&(x>1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	  
	case 'd':
	  
	  D='d';
	  
	  d=4;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x-dim/3)&&(y<dim/3-1)&&(y>1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+(dim/3)*2&&(x<dim/3*2-1)&&(x>dim/3+1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	case 'e':
	  
	  E='e';

	  e=5;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x)&&(y<dim/3*2-1)&&(y>dim/3+1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+dim &&(x<dim/3*2-1)&&(x>dim/3+1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	  
	case 'f':
	  
	  F='f';

	  f=6;
	  
	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x+dim/3)&&(y<dim-1)&&(y>dim/3*2+1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+dim+dim/3&&(x<dim/3*2-1)&&(x>dim/3+1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	case 'g':
	  
	  G='g';

	  g=7;
	  
	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x-dim/3*2)&&(y<dim/3-1)&&(y>1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+dim&&(x>dim/3*2+1)&&(x<dim-1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	case 'h':
	  
	  H='h';

	  h=8;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x-dim/3)&&(y<dim/3*2-1)&&(y>dim/3+1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+dim+dim/3&&(x>dim/3*2+1)&&(x<dim-1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	  
	  
	case 'i':
	  
	  I='i';

	  k=9;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x)&&(y<dim-1)&&(y>dim/3*2+1))
		    {
		      disegno[i][j]=" *";
		    }
		  if (y==-x+dim+dim/3*2&&(x<dim-1)&&(x>dim/3*2+1))
		    {
		      disegno[i][j]=" *";
		    }
		  
		}
	    };break;
	}
      
	
do
  
  {
    
    var=0;
    numero=rand()%9;    
    
    
    if((a+b==3||ac+bc==3) && C=='q')
      {
	numero=2;
      }
    
    if((c+b==5||cc+bc==5) && A=='q')
      {
	numero=0;
      }

    if((a+d==5||ac+dc==5) && G=='q')
      {
	numero=6;
	
      }
    
    if((g+d==11||gc+dc==11) && A=='q')
      {
	numero=0;
      }

    if((g+h==15||gc+hc==15) && I=='q')
      {
	numero=8;
      }

    if((k+h==17||kc+hc==17) && G=='q')
      {
	numero=6;
      }

    if((b+e==7||bc+ec==7) && H=='q')
      {
	numero=7;
      }

    if((h+e==13||hc+ec==13) && B=='q')
      {
	numero=1;
      }

    if((c+e==8||cc+ec==8) && G=='q')
      {
	numero=6;
      }

    if((g+e==12||gc+ec==12) && C=='q')
      {
	numero=2;
      }

    if((d+e==9||dc+ec==9) && F=='q')
      {
	numero=5;
      }

    if((f+e==11||fc+ec==11) && D=='q')
      {
	numero=3;
      }

    if((c+f==9||cc+fc==9) && I=='q')
      {
	numero=8;
      }

    if((k+f==15||kc+fc==15) && C=='q')
      {
	numero=2;
      }

    if((a+e==6||ac+ec==6) && I=='q')
      {
	numero=8;
      }

    if((e+k==14||ec+kc==14) && A=='q')
      {
	numero=0;
      }

    if (numero==0 && A =='q')
      
      {
	computer='a';
	var=1;
      }
    
    if (numero==1 && B=='q')
      
      {
	computer='b';
	var=1;
      }

    if (numero==2 && C=='q')

      {
	computer='c';
	var=1;
      }
   
    if (numero==3 && D=='q')

      {
	computer='d';
	var=1;
      }

    if (numero==4 && E=='q')

      {
	computer='e';
	var=1;
      }

    if (numero==5 && F=='q')

      {
	computer='f';
	var=1;
      }

    if (numero==6 && G=='q')

      {
	computer='g';
	var=1;
      }

    if (numero==7 && H=='q')

      {
	computer='h';
	var=1;
      }

    if (numero==8 && I=='q')

      {
	computer='i';
	var=1;
      }
    
    if (
	(a+b+c)==6||(a+e+k)==15||(a+d+g)==12||(b+e+h)==15||(c+e+g)==15
	||(d+e+f)==13||(c+f+k)==18||(g+h+k)==24
	)
      
      {
	cout<<endl<<endl;
	var=100;
	numero=100;
      }
    if (
	(ac+bc+cc)==6||(ac+ec+kc)==15||(ac+dc+gc)==12||(bc+ec+hc)==15||(cc+ec+gc)==15
	||(dc+ec+fc)==13||(cc+fc+kc)==18||(gc+hc+kc)==24
	)
      
      {
	cout<<endl<<endl;
	var=100;
	numero=100;
      }
    
    
      }
    while(var==0);

	switch(computer)
	  
	  {
	  case 'a':
	    
	    A='a';
	   
	    ac=1;
	    
	    for(int i=0;i<dim;i++)
	      
	      {
		for(int j=0;j<dim;j++)
		  
		  {
		    x=i;
		    y=j;
		    
		    if((y==x)&&(y<dim/3-1)&&(y>1))
		      {
			disegno[i][j]=" .";
		      }
		    if (y==-x+dim/3&&(x<dim/3-1)&&(x>1))
		      {
			disegno[i][j]=" .";
		      }
		    
		  }
	      };break;
	    
	case 'b':
	  
	  B='b';

	  bc=2;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x+dim/3)&&(y<dim/3*2-1)&&(y>dim/3+1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+(dim/3)*2&&(x<dim/3-1)&&(x>1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	case 'c':
	  
	  C='c';
	  
	  cc=3;
	  
	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x+dim/3*2)&&(y<dim-1)&&(y>dim/3*2+1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+dim&&(x<dim/3-1)&&(x>1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	  
	case 'd':
	  
	  D='d';

	  dc=4;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x-dim/3)&&(y<dim/3-1)&&(y>1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+(dim/3)*2&&(x<dim/3*2-1)&&(x>dim/3+1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	case 'e':
	  
	  E='e';
	  
	  ec=5;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x)&&(y<dim/3*2-1)&&(y>dim/3+1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+dim &&(x<dim/3*2-1)&&(x>dim/3+1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	  
	case 'f':
	  
	  F='f';

	  fc=6;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x+dim/3)&&(y<dim-1)&&(y>dim/3*2+1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+dim+dim/3&&(x<dim/3*2-1)&&(x>dim/3+1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	case 'g':
	  
	  G='g';

	  gc=7;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x-dim/3*2)&&(y<dim/3-1)&&(y>1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+dim&&(x>dim/3*2+1)&&(x<dim-1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	case 'h':
	  
	  H='h';

	  hc=8;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x-dim/3)&&(y<dim/3*2-1)&&(y>dim/3+1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+dim+dim/3&&(x>dim/3*2+1)&&(x<dim-1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	  
	  
	case 'i':

	  I='i';	  
	  
	  kc=9;

	  for(int i=0;i<dim;i++)
	    
	    {
	      for(int j=0;j<dim;j++)
		
		{
		  x=i;
		  y=j;
		  
		  if((y==x)&&(y<dim-1)&&(y>dim/3*2+1))
		    {
		      disegno[i][j]=" .";
		    }
		  if (y==-x+dim+dim/3*2&&(x<dim-1)&&(x>dim/3*2+1))
		    {
		      disegno[i][j]=" .";
		    }
		  
		}
	    };break;
	}
      





    cout<<"vuoi stampare il gioco?(s/n)\t\t";
    cin>>gioca;

    if(gioca=='s')

      {
	for (int i=0;i<dim;i++)
	  {
	    cout<<endl;
	    
	    for(int j=0;j<dim;j++)
	      
	      {
		cout<<disegno[i][j];
	      }
	  }
      }

    if (
	(a+b+c)==6||(a+e+k)==15||(a+d+g)==12||(b+e+h)==15||(c+e+g)==15
	||(d+e+f)==15||(c+f+k)==18||(g+h+k)==24
	)

      {
	cout<<endl<<endl;
	cout<<"\t\t\t\t\t\tCOMPLIMENTI!!! HAI VINTO !!!\a";
      }

    else if

      (
       (ac+bc+cc)==6||(ac+ec+kc)==15||(ac+dc+gc)==12||(bc+ec+hc)==15||(cc+ec+gc)==15
       ||(dc+ec+fc)==15||(cc+fc+kc)==18||(gc+hc+kc)==24
       )
      
      {
	cout<<endl<<endl;
	cout<<"\t\t\t\t\t\tHAI PERSO !!!\a";
      }

    cout<<endl<<endl;
    cout<<numero;
    cout<<endl<<endl;
    cout<<"giochi ancora?\t(s/n)\t\t";
    cin>>scelta;
    cout<<endl<<endl;
  
    }
    while (scelta!='n');
    }
 while (scelta!='n');
}

