#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;
}