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