Temos a seguinte estrutura:

struct JOGO{
	int *tabuleiro;
	int ultimaJogada;
	int penultimaJogada;
	int antepenultimaJogada;
	int corAtual;
	int corJogador;
	int profundidadeMinimax;
	int jogadasFeitas;
	int podeDesfazer;
};

O tabuleiro é um vetor de 61 inteiros com um dos três estados:

VAZIO	- Está vazio
BRANCO	- Contém uma peça branca
PRETO	- Contém uma perça preta

O trabalho é basicamente no arquivo "inteligenciaArtificial.c", a partir da função "jogadaComputador()".
Esta função retorna um inteiro entre 0 e 60 referente a posição no tabuleiro que o computador vai jogar.
É a partir dela que fazemos todo o processamento da melhor jogada possível, chamando um minimax com corte alfa-beta.
A função "jogadaComputador()" chama a "primeiroMax()" que então chama várias "minimax()".
A função "minimax()" avalia as jogadas usando a função "resultadoJogo()".

A função "resultadoJogo()" recebe o tabuleiro, a cor a ser avaliada e o numero de jogadas feitas e retorna um dos seguintes valores:

DERROTA		- Quando o jogador em avaliação perde
EMPATE		- Quando ocorre um empate
CONTINUA	- Quando não há resultado e o jogo ainda tem continuação
VITORIA		- Quando o jogador em avaliação ganha

Também há a função "jogadaValida()", que retorna:

SIM	- Posição está vazia e a jogada pode ser feita para preenchê-la
NAO	- Posição já está ocupada e a jogada para preenchê-la não será possível