1. Faça um programa para determinar a próxima jogada em um Jogo da Velha. Assumir que o tabuleiro é representado por uma matriz de 3 times 3, onde cada posição representa uma das casas do tabuleiro. A matriz pode conter os seguintes valores -1, 0, 1 representando respectivamente uma casa contendo uma peça minha (-1), uma casa vazia do tabuleiro (0), e uma casa contendo uma peça do meu oponente (1).
Exemplo:
-1 1 1
-1 -1 0
0 1 0

Passo 1

O enunciado pede para, dado um tabuleiro de Jogo da Velha representado por uma matriz 3×3 com valores –1 (minha peça), 0 (casa vazia) e 1 (peça do oponente), determinar a próxima jogada seguindo a estratégia de ganhar imediatamente quando possível, senão bloquear o adversário e, caso nenhuma das duas ocorra, escolher a primeira casa livre.
Para implementar essa lógica precisamos identificar todas as linhas vencedoras possíveis: 3 linhas horizontais, 3 verticais e 2 diagonais. Cada linha é um conjunto de 3 posições cujos índices podemos denotar por pares (i,j).

Passo 2

O primeiro passo na resolução efetiva é verificar se existe alguma linha onde eu já tenho 2 peças (do valor –1) e a terceira posição é 0. Se sim, coloco minha peça nessa posição vazia para vencer imediatamente.
Analisando a matriz exemplo:
-1 1 1
-1 -1 0
0 1 0
hline
Observamos que na segunda linha temos os valores |c|c|c|hline -1 & 1 & 1 hline -1 & -1 & 0 hline 0 & 1 & 0 hline . Isso significa que posso ganhar colocando -1, -1, 0 na posição correspondente a essa casa vazia, que é linha 2, coluna 3.

Passo 3

Não é necessário verificar bloqueios nem outras heurísticas pois já encontramos a jogada vencedora.
Posso então retornar coordenadas (2,3) como a jogada ótima para vencer imediatamente.

Resposta

A próxima jogada deve ser na linha 2, coluna 3.

Exercícios relacionados