Você está na página 1de 10

Dots and Boxes

(a.k.a.: jogo dos pontinhos)

Regras
Dots and Boxes consiste num tabuleiro com um
nmero varivel de pontos. Estes pontos se distribuem
equidistancialmente em formato de matriz quadrada.
O formato clssico do jogo admite dois jogadores
que executam, alternadamente, uma jogada. Uma jogada
consiste na insero de uma aresta que liga um ponto (xi,
yi) e outro (xf,yf), onde:
xi + yi - 1 <= xf + yf <= xi + yi + 1
Intuitivamente: de um vrtice para um de seus
adjacentes verticais ou horizontais.
Um jogador ganha um ponto se fechar um
quadrado. Ou seja: se sua jogada unir dois pontos que
estejam diretamente ligados, cada um, a um ponto, onde
estes dois ltimos estejam diretamente ligados um ao
outro. Se um jogador fecha um quadrado, ele deve
executar outra jogada.
Vence o jogador que fechar mais quadrados.

Porm...
Dots and boxes foi popularizado por ser facilmente
implementado, sendo categorizado como um jogo de papel
e caneta, tal como o prprio jogo da velha.
No entanto, num efeito telefone sem fio, aliado ao fato de
raramente ter sido apresentado atravs de seu nome,
algumas regras se tornaram obscuras para os jogadores
mais recentes, fazendo com que jogassem uma verso
levemente alterada.
Ns preferimos manter a autenticidade da verso na qual
todos jogvamos na infancia que, diferentemente da verso
formal apresentada no slide anterior, no permite duas ou
mais jogadas consecutivas em circunstancia alguma.

Motivao da Escolha
e Propriedades do Ambiente
Como dito anteriormente, Dots and Boxes foi presente em algum
momento do nosso passado. Nos interessamos por desenvolver um
algoritmo de IA para ele por ter esse aspecto em comum e por
acreditarmos no ter sido feito ainda.
Tal como o jogo da velha e outros similares, o ambiente :
Completamente Observvel
Multi-Agentes
Determinstico
Sequencial
Esttico
Discreto

Implementao
O jogo foi implementado em Java. As trs classes em
questo so:
Tabela: diz respeito simplesmente a uma instancia do
ambiente de jogo.
MyTree: rvore de estados. Cada estado descrito por uma
Tabela.
TrabIA: a main, alm de dispor dos algoritmos de IA
necessrios.

Implementao
Tabela:
Nesta entidade, encontram-se atributos e funes
suficientes para que duas pessoas possam jogar, como os
pontos de cada um, funo de marcar uma aresta e as
arestas que foram marcadas.
Para reduzir o processamento, criamos uma matriz para
representar quo cada um dos quadrados est preenchido.
Dessa forma, economiza-se o esforo de verificar 6 arestas
em toda insero para saber se nenhum, um ou dois
quadrados foram preenchidos.

Implementao
MyTree:
MyTree uma rvore n-ria, onde n o nmero de
prximos estados possveis. No caso do nosso jogo, esse
nmero sempre bem definido de acordo com a
profundidade da rvore: cada filho de uma rvore de n
filhos ter n-1 filhos, para n > 1. MyTree foi feita
especialmente para garantir esta condio.
A condio garantida pela funo de insero.

Implementao
TrabIA:

Nossa IA utiliza minimax com poda alfabeta, limitao de


profundidade baseada no nmero de estados alcanados no total
e um cut off que consiste em eliminar estados derivados atravs
de simetrias vertical, horizontal, diagonal e anti-diagonal.
A forma como este segundo feito , na ocasio em que a
mquina jogar primeiro, delimitando o nmero de prximos
estados em .

Implementao
Passo a passo:
-

O jogo se limita a um loop que se encerra quando um dos


jogadores preencheu metade do total de quadrados + 1 ou quando
todas as arestas foram preenchidas. A paridade do ndice
determina se quem joga ser o computador ou o jogador. Os
prximos passos dizem respeito ao que ocorre em cada passada.
Na vez do jogador, apenas lhe solicitado as coordenadas do
vrtice de origem e uma informao dizendo respeito ao vrtice a
ser ligado, formando uma aresta vertical ou horizontal. Na vez do
computador, chamado o minimax alfabeta.

Implementao
Passo a passo:
-

A funo max_value chamada, tendo como parmetros a Tabela em


questo e informaes a respeito de ser o primeiro turno - tendo como
consequencia, a gerao de uma rvore de estados menor -, ser a
primeira chamada - tendo como consequencia, retornar o filho vencedor,
ao invs da prpria Tabela, j que o caso em que esta a raiz da rvore
- e o limite, usado para delimitar profundidade.
A rvore de busca no gerada previamente ao minimax, mas
incrementalmente, a cada chamada de max_value e min_value. As
funes que geram a rvore ou uma simplificao so, respectivamente,
gera_rot e gera_tot.