#include <stdio.h>
#include <stdbool.h>
#define MAXSTAN 3

int sprawdzczywygral(short int tab[MAXSTAN][MAXSTAN]);
int sprawdzczyremis(short int tab[MAXSTAN][MAXSTAN]);
int rekurencja(short int tab[MAXSTAN][MAXSTAN]);
bool czymozesz_zapis(short int klawisz, short int wybor, short int tab[MAXSTAN][MAXSTAN]);

int main(void)
{
 short int tab[MAXSTAN][MAXSTAN];
 tab[0][0]=2; tab[0][1]=5; tab[0][2]=2; tab[1][0]=1; tab[1][1]=6; tab[1][2]=9; tab[2][0]=2; tab[2][1]=2; tab[2][2]=8;  
 printf("%i\n", rekurencja(tab));
 return 0; 
}

int rekurencja(short int tab[MAXSTAN][MAXSTAN])
{
 int wygral=sprawdzczywygral(tab); int remis=sprawdzczyremis(tab); int i=1;
 if(wygral!=0) return wygral; 
 if(remis!=1) return remis;
 for(i=1; i<10; i++)
 {

 } 
 return 5;
}

/*sprawdza czy 1 - kolko wygralo, jesli tak zwraca wartosc ujemna, jesli wygralo 2 zwraca wartosc dodatnia*/
int sprawdzczywygral(short int tab[MAXSTAN][MAXSTAN])
{ 
 int i,j;
 for(i=0; i<(MAXSTAN); i++)
  for(j=1; j<(MAXSTAN); j++)
  { 
   /*Sprawdzenie po wierszach i kolumnach, czy ktos wygral*/
   if((tab[i][0]==j)&&(tab[i][1]==j)&&(tab[i][2]==j)) return (j==1)?-1:1;
   if((tab[0][i]==j)&&(tab[1][i]==j)&&(tab[2][i]==j)) return (j==1)?-1:1;
  } 
 /*Sprawdzenie po przekatnych, czy ktos wygral*/
 if((tab[0][0]==j)&&(tab[1][1]==j)&&(tab[2][2]==j)) return (j==1)?-1:1;
 if((tab[2][0]==j)&&(tab[1][1]==j)&&(tab[0][2]==j)) return (j==1)?-1:1;
 return 0; /*Jesli nikt nie wygral zwroc 0*/
}

int sprawdzczyremis(short int tab[MAXSTAN][MAXSTAN])
{
 int i=0; int j=0;
 while(j<(MAXSTAN+1)) /*jeśli licznik, wyszedł poza największą liczbę kolumn+1 pętla ma się przerwać ponieważ, została już sprawdzona cała tablica*/
 {
  if(tab[i][j]==0) return 1; /*pętla sprawdza, po wierszach, czy jest 0 w tablicy*/
  ++i;
  if(i==(MAXSTAN+1)) {i=0; ++j;} /*jeśli licznik wyszedł poza największą liczbę wierszy+1, licznik ma się wyzerować i dodać do liczby kolumn*/
 }
 /*funkcja zwróci 0, wyłącznie wtedy kiedy w tablicy już nie ma wartości zero. Czyli miejsca gdzie można postawić figurę lub liczbę*/
 return 0;
}

/*ZNAJDUJE SIE W CI.c*/
bool czymozesz_zapis(short int klawisz, short int wybor, short int tab[MAXSTAN][MAXSTAN])
{
 switch(klawisz)
 { 
  case 55: if(tab[0][0]==0) { tab[0][0]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 56: if(tab[0][1]==0) { tab[0][1]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 57: if(tab[0][2]==0) { tab[0][2]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 52: if(tab[1][0]==0) { tab[1][0]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 53: if(tab[1][1]==0) { tab[1][1]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 54: if(tab[1][2]==0) { tab[1][2]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 49: if(tab[2][0]==0) { tab[2][0]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 50: if(tab[2][1]==0) { tab[2][1]=(wybor==49)?1:2; return 0; } else return 1; break;
  case 51: if(tab[2][2]==0) { tab[2][2]=(wybor==49)?1:2; return 0; } else return 1; break;
  default: return 1; 
 }
 return 1;
}