Skip to content

"Dots" é um jogo onde os jogadores conectam pontos para formar quadrados. A implementação do algoritmo MinMax permite criar uma IA que joga contra humanos ou outras IAs, avaliando todas as jogadas possíveis para maximizar suas chances de vitória.

License

Notifications You must be signed in to change notification settings

FilipeSS01/DotsIA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dots And Boxes

Este projeto é uma implementação simples do jogo Dots And Boxes. Seu objetivo é demonstrar o uso do algoritmo minimax com poda alpha beta por um agente adversário.

Instruções do Jogo

  • Alternadamente, dois jogadores desenham segmentos de reta horizontais ou verticais, um por vez, unindo dois pontos vizinhos numa malha retangular pontilhada de qualquer dimensão.

  • Sempre que escolher uma jogada, e um quadrado for fechado, é escrito no interior da “caixa” o código do jogador que fechou o quadrado e o jogador joga novamente. Se essa nova jogada não completar outra caixa, ele passa a vez e o jogo continua.

    Board                                Board2

    • Jogadas possíveis: 1; 3; 10; 12; 14; 21; 23; 30; 32; 34; 41; 43;
    • Jogador 0: IA
    • Jogador 1: Player
  • Se não houver mais jogadas a fazer, o jogo termina e o vencedor é aquele com o maior número de quadrados fechados.

Estrutura do Código

O código foi dividido em duas classes App e Node.

App

Classe na qual foi implementado como classe principal, é nela onde ocorre toda interação entre o jogador e o jogo.

  • Funções:
    • printTable: Uma simples implementação com estruturas de for para passar por cada elemento de uma matriz de inteiros, fazendo um "conversão" de int para string.
    • fillTable: Estrutura de for para declarar valores a matriz table. Responsável pela criação do tabuleiro.
    • playGame: Função na qual é responsável pela interação do jogador com o jogo, é nela que está chamando todas as outras funções do jogo. Contem o loop responsável pelo jogo.
    • checkScore: Função que faz a contagem de quantos quadrados foram fechados por cada jogador, retornando a diferença entre os pontos da IA e do jogador. Tem relação direta com a função miniMax.
    • isValidMove: Função que verifica se a jogada informada pelo jogador é válida.
    • isSquareComplete: Função que verifica se na jogada escolhida pelo jogador ou pela IA fechou um quadrado, caso tenha fechado adiciona no meio do quadrado o código que representa o jogador ou a IA, e retorna true.
    • createAllTree: Função responsável por criar a árvore de possibilidades na qual a IA mapeia as jogadas possíveis. Tem relação direta com a classe Node.
    • cloneTable: Função que está responsável por clonar o tabuleiro e retornar o clone do tabuleiro do jogo.
    • miniMax: A partir do retorno da função checkScore, está função vai até aos nós folhas da árvore e retorna o valor obtido, maximizando as jogadas da IA e minimizando as jogadas do jogador.

Node

Classe Node implementada para conter informações de cada nó da árvore.

  • Funções:
    • fill: Função para criar os filhos de cada nó da árvore.
    • playGameIA: Função para simular as jogadas em cada nó verificando se o quadrado foi fechado ou não, caso não, alterna o jogador para que a ia continue com a simulação.

Erros

Infelizmente não consegui resolver o erro de space heap com a árvore com 10 jogadas possíveis, está rodando somente com valores menores que 10 e a IA não é tão eficiente, não são todas as partidas que ela ganha.

About

"Dots" é um jogo onde os jogadores conectam pontos para formar quadrados. A implementação do algoritmo MinMax permite criar uma IA que joga contra humanos ou outras IAs, avaliando todas as jogadas possíveis para maximizar suas chances de vitória.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages