- Faça um programa para determinar a próxima jogada em um Jogo da Velha. Assumir que o tabuleiro é representado por uma matriz de
, 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
-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).
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:
Analisando a matriz exemplo:
-1 | 1 | 1 |
-1 | -1 | 0 |
0 | 1 | 0 |
hline |
Observamos que na segunda linha temos os valores
. Isso significa que posso ganhar colocando
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.
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.