• Nenhum resultado encontrado

Jogo King Relatório da Melhoria do Trabalho Inteligência Artificial. Tiago Fonseca, ei02100

N/A
N/A
Protected

Academic year: 2021

Share "Jogo King Relatório da Melhoria do Trabalho Inteligência Artificial. Tiago Fonseca, ei02100"

Copied!
20
0
0

Texto

(1)

Jogo King

Relat´

orio da Melhoria do Trabalho

Inteligˆencia Artificial

Tiago Fonseca, ei02100

19 de Julho de 2005

(2)

Resumo

Conte´

udo

1 Introdu¸c˜ao 3 1.1 Objectivo . . . 3 1.2 Motiva¸c˜ao . . . 3 2 Descri¸c˜ao 4 2.1 Regras do King . . . 4 2.2 Desenvolvimento do Programa . . . 5 2.3 Estrutura do Programa . . . 5

2.3.1 M´odulo de Inteligˆencia Artificial . . . 5

2.3.2 M´odulo de Interface Gr´afica . . . 6

2.4 Esquema de Representa¸c˜ao de Conhecimento . . . 9

2.5 Implementa¸c˜ao do Esquema de Representa¸c˜ao de Conhecimento . . . 9 3 Ambiente de Desenvolvimento 10 4 Avalia¸c˜ao do Programa 11 5 Resultados Experimentais 12 6 Agradecimentos 13 7 Conclus˜ao 13 8 Melhoramentos 13 A Exemplo de Execu¸c˜ao 15

(3)

Lista de Figuras

1 Arranque do jogo . . . 7

2 Possibilidade de ver as cartas dos advers´arios . . . 7

3 Escolha da dificuldade do advers´ario . . . 8

4 Ver pontua¸c˜ao corrente do jogo . . . 8

5 Conjunto de cartas do jogador . . . 9

6 In´ıcio do jogo . . . 15

7 Escolha da carta . . . 16

8 Ap´os a primeira jogada . . . 16

9 Ap´os a segunda jogada . . . 17

10 Pontua¸c˜ao no fim da m˜ao . . . 17

11 Chegada `a s´etima m˜ao . . . 18

12 Escolha do trunfo . . . 18

13 Escolha da carta . . . 19

(4)

1

Introdu¸

ao

1.1

Objectivo

O objectivo deste trabalho consiste na constru¸c˜ao de um jogo de King, em que vai ser permitido, a um jogador humano, defrontar trˆes jogadores com inteligˆencia artificial. A inteligˆencia artificial deve ser implementada com o uso do algoritmo Minimax com cortes Alfa-Beta.

1.2

Motiva¸

ao

A motiva¸c˜ao principal deste trabalho ´e a inicia¸c˜ao numa ´area da inform´atica, a ´area dos v´ıdeo-jogos, que, actualmente, conta com um mercado e uma ind´ustria em expans˜ao. Tamb´em foi motivante pela necessidade de aprendizagem de outras tantas tecnologias e ferramentas necess´arias para a elabora¸c˜ao do programa.

(5)

2

Descri¸

ao

2.1

Regras do King

O King ´e um jogo para quatro jogadores, o qual consiste num conjunto de dez m˜aos, cada uma constitu´ıda por treze vazas, no qual cada jogador vai tentar obter o m´aximo de pontua¸c˜ao. Durante todo o jogo os jogadores s˜ao obrigados a assistir ´a primeira carta de cada vaza, s´o podendo jogar uma carta de um naipe diferente quando j´a n˜ao dispuserem de nenhuma do mesmo naipe.[1]

Em cada m˜ao s˜ao distribu´ıdas treze cartas. Das dez m˜aos, seis s˜ao de pontua¸c˜ao negativa e quatro de pontua¸c˜ao positiva. Os objectivos e pontua¸c˜oes de cada uma s˜ao: • 1a ao - N˜ao fazer vazas. Cada vaza vale 20 pontos negativos. No total ser˜ao

distribu´ıdos 260 pontos.

• 2a ao - N˜ao receber copas. Os jogadores n˜ao poder˜ao come¸car uma vaza com

co-pas se ainda possu´ırem cartas de outro naipe. Cada copa vale 20 pontos negativos. No total ser˜ao distribu´ıdos 260 pontos.

• 3a ao - N˜ao receber reis nem valetes. Cada uma destas cartas valem 30 pontos

negativos. No total ser˜ao distribu´ıdos 240 pontos.

• 4a ao - N˜ao receber damas. Cada dama vale 50 pontos negativos. No total ser˜ao

distribu´ıdos 200 pontos.

• 5a ao - N˜ao receber o rei de copas. Os jogadores n˜ao poder˜ao come¸car uma vaza

com copas se ainda possu´ırem cartas de outro naipe, e quando tiverem oportu-nidade de jogar o rei de copas, s˜ao obrigados a fazˆe-lo. O rei de copas vale 160 pontos negativos.

• 6a ao - N˜ao fazer as ´ultimas duas vazas. Cada vaza vale 90 pontos negativos.

No total ser˜ao distribu´ıdos 180 pontos.

• 7a a 10a ao - Nestas m˜aos, cada jogador ter´a o direito de escolher um trunfo1 ou

leiloar2 esse direito. Cada vaza vale 25 pontos positivos. Ser˜ao distribu´ıdos 325

pontos positivos por m˜ao, num total de 1300 pontos.

1O trunfo ´e um naipe que permite, ´as cartas desse naipe, ganhar a qualquer outra carta de outro naipe.

2No leil˜ao, os outros jogadores poder˜ao oferecer um n´umero de vazas em troca do direito de escolher o trunfo, sendo que cada licita¸c˜ao ter´a de ser maior que a anterior. O jogador poder´a sempre recusar a oferta, por maior que seja. O naipe s´o dever´a ser revelado depois de o jogador aceitar a oferta.

(6)

2.2

Desenvolvimento do Programa

Os primeiros elementos a serem criados foram as classes que permitem o armazenamento de informa¸c˜ao relativo ao jogo, aos jogadores e conjuntos de cartas, que nesta fase utilizava um vector de inteiros para armazenar as cartas, as quais ainda tinham poucos m´etodos. De seguida foram criados v´arios m´etodos destas classes3, como por exemplo

o m´etodo que devolve qual a jogada desejada pelo computador, que numa primeira fase ainda s´o conseguia ir ao primeiro n´ıvel de profundidade, e tamb´em foram criadas duas novas classes, uma que lida com as pontua¸c˜oes do jogo e que tamb´em contˆem a fun¸c˜ao heur´ıstica, e uma outra classe que apenas serve para facilitar a utiliza¸c˜ao das posi¸c˜oes dos v´arios jogadores.

A seguir o m´etodo que calculava a jogada do computador foi melhorado, acrescentando-lhe a possibilidade de pesquisar a v´arias profundidades e tamb´em devido ´a imple-menta¸c˜ao dos Cortes Alpha-Beta, as cartas passaram a ser representadas por um inteiro de 64 bits, e tamb´em foi criado uma classe que representava uma carta, com m´etodos que facilitaram a interpreta¸c˜ao do c´odigo. De seguida foi melhorada a fun¸c˜ao heur´ıstica, e implementou-se outro m´etodo de pesquisa de solu¸c˜ao4.

Em ´ultimo foi criada a interface gr´afica e foram efectuados pequenas correc¸c˜oes e optimiza¸c˜oes ao c´odigo, como por exemplo, melhoramento da fun¸c˜ao heur´ıstica e na fun¸c˜ao de remo¸c˜ao das cartas jogas numa vaza.

2.3

Estrutura do Programa

2.3.1 M´odulo de Inteligˆencia Artificial

Este m´odulo contˆem todo o c´odigo respons´avel pelo desenrolar do jogo, por exemplo, a distribui¸c˜ao das cartas no arrancar do jogo, a verifica¸c˜ao das cartas e o comprimento das regras do jogo, e tamb´em, como o nome indica, a implementa¸c˜ao dos algoritmos de inteligˆencia artificial.

A inteligˆencia artificial foi implementada atrav´es do algoritmo Minimax[2], que con-siste na em uma ´arvore de pesquisa com os v´arios desenrolares de jogo poss´ıveis, e que em cada n´ıvel de profundidade vai ser escolhido qual o desenrolar prefer´ıvel para cada jogador, com a escolha a ser alternada pelos jogadores.

Tamb´em foi implementado o algoritmo de Cortes Alfa-Beta, que consiste na eli-mina¸c˜ao de ramos da ´arvore de pesquisa. Este algoritmo tem a capacidade de reduzir o tempo de processamento sem alterar os resultados obtidos, pois s´o s˜ao cortados ramos que nunca seriam escolhidos pelo algoritmo de Minimax.

A fun¸c˜ao heur´ıstica usada no algoritmo Minimax ´e constitu´ıda pela soma da pon-tua¸c˜ao obtida na vaza, com um peso que ´e dado a cada carta jogada (Tabela 1), para

3Altura da entrega do relat´orio intercalar 4Altura da entrega do relat´orio final

(7)

Tabela 1: Peso das cartas na fun¸c˜ao heur´ıstica Carta Peso duque 0 terno 1 quadra 2 quina 3 sena 4 bisca 5 oito 6 nove 7 dez 8 valete 9 dama 10 rei 11 ´ as 12

deste modo jogar-se as cartas mais fortes ou mais fracas logo de inicio ou no fim, con-forme a m˜ao que se tiver a jogar. Depois cada m˜ao recebeu pequenas altera¸c˜oes nos pesos das cartas. Nas m˜aos em que receber certas cartas implica receber pontos nega-tivos, essas mesmas cartas passam a ter o dobro do peso. Para a segunda m˜ao e para as quatro ´ultimas m˜aos, os pesos das copas e das cartas do mesmo naipe que o trunfo, respectivamente, passam a valer mais 13 valores.

Foi tamb´em necess´ario criar uma fun¸c˜ao heur´ıstica para escolher o trunfo. Esta fun¸c˜ao determina qual o naipe mais indicado atrav´es da soma de todos os pesos das cartas de um mesmo naipe, o que tiver o maior somat´orio ´e o escolhido. O peso das cartas ´e semelhante ao da outra fun¸c˜ao heur´ıstica, mas com todos os pesos serem acrescidos de 1 valor.

2.3.2 M´odulo de Interface Gr´afica

O programa ´e constitu´ıdo por uma interface gr´afica (Figura 1) que permite, ao utili-zador, desenrolar um jogo de King de forma muito simples. Permite ver as cartas dos advers´arios (Figura 2), para efeitos de avalia¸c˜ao da capacidade da inteligˆencia artificial, escolher o n´ıvel de dificuldade dos advers´arios (Figura 3), e ver a pontua¸c˜ao actual do jogo (Figura 4). Para apoio ao utilizador, existe uma barra de estado que indica o que fazer para poder prosseguir no jogo.

(8)

Figura 1: Arranque do jogo

(9)

Figura 3: Escolha da dificuldade do advers´ario

(10)

2.4

Esquema de Representa¸

ao de Conhecimento

A informa¸c˜ao necess´aria de representa¸c˜ao para o jogo s˜ao o conjunto de cartas (Figura 5), que ´e usado para armazenar tanto as cartas do jogador como as cartas que os advers´arios podem possuir.

Figura 5: Conjunto de cartas do jogador

2.5

Implementa¸

ao do Esquema de Representa¸

ao de

Conhe-cimento

Para armazenar um conjunto de cartas utilizou-se um inteiro de 32 bits, em que cada bit representa uma carta, duque de paus corresponde ao primeiro bit, terno de paus ao segundo e por ai em diante, com o ´as de copas a ser representado pelo bit 52. A ordem das figuras ´e duque, terno, quadra, quina, sena, bisca, oito, nove, dez, valete, dama, rei e ´as; e dos naipes ´e paus, espadas, ouros e copas.

(11)

3

Ambiente de Desenvolvimento

O programa foi desenvolvido em sistema operativo GNU/Linux, distribui¸c˜ao Debian[4]. O m´odulo de inteligˆencia artificial foi desenvolvido no IDE Eclipse[5], em linguagem C++. O m´odulo de interface gr´afica foi desenvolvido utilizando o IDE Glade[6], usando a biblioteca GTKMM[7] (adapta¸c˜ao do GTK para C++), para editar os ficheiros foi usado o editor de texto Gvim[8].

(12)

4

Avalia¸

ao do Programa

Para compara¸c˜ao do desempenho do programa com outros programas, o modo de ava-lia¸c˜ao aconselhado ´e o confronto directo entre os m´odulos de inteligˆencia artificial, de modo que, no final, o m´odulo que mais vit´orias e/ou melhores pontua¸c˜oes tiver obtido, ser´a o que tem a melhor implementa¸c˜ao.

(13)

5

Resultados Experimentais

Durante o desenvolvimento do trabalho foram sendo realizados v´arios testes para ve-rifica¸c˜ao do bom funcionamento do programa, bem como para an´alise da evolu¸c˜ao do desempenho da inteligˆencia artificial. Na vertente da an´alise do desempenho, notaram-se grandes melhorias a quando a implementa¸c˜ao do algoritmo de Cortes Alfa-Beta, bem como na altera¸c˜ao da forma de armazenamento das cartas, de vector de 52 inteiros para um inteiro de 64 bits. Tamb´em foram realizados testes a uma abordagem diferente na procura da jogada pelo computador.

No Minimax normal, ´e criada uma ´arvore de pesquisa e ´e a partir dela que se obt´em a ’melhor’ jogada poss´ıvel de ser realizada. O que se tentou ver era se, em vez de se utilizar uma s´o ´arvore de pesquisa, com todas as poss´ıveis jogadas de ser realizadas, utilizar v´arias ´arvores, em que cada uma ia ter uma simula¸c˜ao de vis˜ao perfeita de jogo, reduzindo a expans˜ao da ´arvore e deste modo podendo chegar mais longe na profundidade de pesquisa. Com a combina¸c˜ao dos v´arios resultados obtidos por todas as pesquisas, poderia conseguir-se, no mesmo tempo de processamento, uma jogada ’melhor’ do que a obtida utilizando o outro m´etodo.

Atrav´es da analise dos tempos de pesquisa, esta segunda forma de obten¸c˜ao da jogada mostrou n˜ao ser compensat´oria, devido ao facto de a ´arvore de pesquisa, mesmo com a simula¸c˜ao de vis˜ao perfeita de jogo, continuar a ter um expans˜ao muito grande, chegando a demorar quase tanto tempo que o outro m´etodo para processar uma ´arvore apenas com mais uma profundidade de pesquisa, como se pode ver pela tabela 2. Com estes resultados, optou-se por usar o primeiro m´etodo.

Tabela 2: Jogadas poss´ıveis calculadas

M´etodo N´umero de jogadas Normal com profundidade = 2 34 ∗ 106

(14)

6

Agradecimentos

Queria aqui lembrar que este ´e um relat´orio de melhoria de trabalho, e como tal, parte do trabalho aqui apresentado foi desenvolvido em conjunto com os meus parceiros, Carlos Cordeiro e Pedro Carneiro.

De referir tamb´em, que a imagem “bonded.png”, usada para a obten¸c˜ao das texturas das cartas, foi obtida a partir da colec¸c˜ao de jogos Gnome Games[9].

7

Conclus˜

ao

Com este trabalho foi poss´ıvel realizar um programa que mostra ter um bom desempe-nho em termos de capacidade artificial e com uma interface gr´afica simples e de f´acil interpreta¸c˜ao. Quanto aos requisitos do trabalho, foram todos realizados, tendo esta melhoria servido para criar a interface gr´afica, que era uma lacuna da primeira vers˜ao do trabalho entregue, e tamb´em para fazer outros pequenos melhoramentos, que permi-tiram reduzir o tempo de processamento, bem como melhorar as escolhas das jogadas.

8

Melhoramentos

Os melhoramentos poss´ıveis de serem realizados s˜ao, na sua maior parte, referentes ao m´odulo de inteligˆencia artificial, em que os m´etodos mais utilizados na procura da jogada podem ser optimizados, bem como a implementa¸c˜ao do leil˜ao do direito de escolha do trunfo.

No m´odulo de interface gr´afica pode ser melhorado o aspecto, e aumentar a funcio-nalidades do oferecidas.

(15)

Referˆ

encias

[1] COPAG, http://loja.copag.com.br/portalcopag/jsp/institucional/ regras/king.jsp

[2] AI depot, Paulo Pinto, http://ai-depot.com/LogicGames/MiniMax.html [3] Claude Chaunier, http://clauchau.free.fr/gamma.html, 14 Dezembro 1998 [4] Debian, http://www.debian.org/

[5] Eclipse, http://eclipse.org [6] Glade, http://glade.gnome.org/ [7] GTK, http://www.gtkmm.org [8] Vim, http://www.vim.org

(16)

A

Exemplo de Execu¸

ao

Para arrancar o programa basta correr o comando “./king”. Na directoria onde o pro-grama for corrido, tamb´em tem de conter o ficheiro “bonded.png”. Para o programa funcionar, o computador tem de ter instalado a biblioteca GTKMM[7] (adapta¸c˜ao do GTK para C++).

Depois de arrancar o jogo, s´o ´e necess´ario seguir as indica¸c˜oes que v˜ao aparecendo na barra de estado e desfrutar.

(17)

Figura 7: Escolha da carta

(18)

Figura 9: Ap´os a segunda jogada

(19)

Figura 11: Chegada `a s´etima m˜ao

(20)

Figura 13: Escolha da carta

Referências

Documentos relacionados

The purpose of this study is to recognize and describe anatomical variations of the sphenoid sinus and the parasellar region, mainly describing the anatomy of

A incapacidade específica foi avaliada através da Escala Funcional Específica do Paciente 9 , que avalia três atividades em que o paciente sente mais dificuldade de

Se os personagens não intervierem com DuBois, provavelmente irão direto ver Karin, que se encontra em companhia de Alfred: ela acaba de se levantar, e Lucille está preparando seus

R = Quando um usuário visita o site pela primeira vez, o site devolve um número de cookie. Este  número é  armazenado  no host  do usuário  e é

97 Figura do Apêndice E - Variação de cobertura do solo para área edificada entre os anos de 1999 e 2009 na favela Parque da Cidade. 98 Figura do Apêndice F - Variação de

Os ativos financeiros disponíveis para venda são ativos financeiros não derivados que: i) o Grupo tem intenção de manter por tempo indeterminado, ii) são designados como

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

Meus Irmãos do Esquadrão da Terra, nós os Graus da Cidade dos Sete Plantas, sentimo-nos muito contentes com a participação de todos vocês neste nosso encontro no Campo do