
3 Maneiras de se fazer uma IA para o Jogo da Velha
O seu Jogo da Velha (ou Jogo do Galo) está maneiro, um jogador contra o outro, você joga com seus amigos, com a sua mãe, tem uma interface gráfica bonita com vários botões estilosos e um efeito de vitória super empolgante.
Mas se você está lendo este artigo é porque você quer ir além, você quer criar a possibilidade do jogador jogar sozinho, contra a máquina, você quer criar uma inteligência artificial.
Aqui estão 3 jeitos de se implementar uma inteligência artificial para um jogo da velha, para você ter o seu glorioso modo Humano vs Máquina.
Em ordem de potência e elegância
1. Uma série de regras com ifs arbitrários
Provavelmente é o que você tem tentado fazer até o presente momento.
Não há problema nenhum em fazer deste jeito pois o Jogo da Velha tem um espaço de jogadas curto. Com espaço de jogadas quero dizer quantidade de situações possíveis no tabuleiro, é bem possível que você consiga criar em tempo hábil uma quantidade de regras suficiente para que o jogo se torne divertido.
Ex.:
if (tabuleiro[0][0] == atual && tabuleiro[0][1] == atual && tabuleiro[0][2] == VAZIO) {
jogue(0, 2);
}
Existem jeitos mais elegantes, entretanto.
2. Heurística bem definida
Uma heurística é um método usado quando não se sabe ou não se é possível aplicar uma solução perfeita para um problema.
O que apresentei em 1. é uma heurística, porém ela carece de definições, ela é meio acochambrada, no mundo dos jogos o acochambramento é rei, mas você é uma pessoa que valoriza as implementações corretas, impecáveis, código limpo, regras arbitrárias sem uma lógica não lhe agradam. Então você pode fazer algo deste tipo:
Para cada quadro vazio, calcule: * Mais 02 pontos se a posição for a central; * Mais 01 ponto se a posição estiver nos quatro cantos da matriz; * Menos 02 pontos, se já houver uma ou mais peças do adversário na mesma linha, coluna ou diagonal onde a posição se encontra; * Mais 04 pontos se a posição impedir a vitória do adversário; * Mais 04 pontos se a posição levar a uma vitória; Ao final, a posição escolhida será aquela que tiver o maior número de pontos.
3. UNSTOPPABLE: Algoritmo Minimax
Este método é infalível. Como é possível pro computador jogar todas as jogadas de um jogo da velha muito rápido, o computador consegue saber exatamente quais são os caminhos de jogo que irão o levar para uma vitória ou uma derrota, ele só vai escolher os caminhos vitoriosos.
Em jogos mais complexos como Dama e Xadrez o algoritmo Minimax ou MinMax não pode ser aplicado de maneira ingênua pois o espaço de jogadas é muito grande e demoraria muito tempo para se avaliar todas as situações possíveis.
A ideia é simples, vai ser gerada uma árvore com todos as situações possíveis e nos tabuleiros de fim de jogos é atribuída uma pontuação: 1 caso a IA ganhe e -1 caso ela perca, para empates é atribuído 0. Some estas pontuações recursivamente e você vai obter um placar para cada jogada possível em um determinado momento.
Se você quiser mais detalhes de como implementar acesse: tutorial de como implementar Minimax para um jogo da velha (em inglês)
- IA de jogo da velha
- Inteligência Artificial para jogo da velha
- jogo da velha jogar com a máquina
- jogo da velha humano vs computador