A sutileza humana contra a frieza calculista das máquinas

3 Maneiras de se fazer uma IA para o Jogo da Velha


Júlio Rodrigues ·

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)

Perguntas/Queries relacionadas
  • 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
© Bladecast 2018. All rights reserved.