Othelo Alunos: Sávio Mendes de Figueiredo ([email protected]) Sômulo Nogueira Mafra ([email protected]) Prof.: Inês dutra Inteligência artificial Coppe sistemas - UFRJ Índice 1. 2. 3. 4. 5. 6. 7. 8. Origem do Jogo Introdução Regras Como jogar Heurística Posicional Heurística Mobilidade Conclusões Bibliografia Origem do Jogo Este jogo foi inventado na Inglaterra, no final do século passado. Também é conhecido como Reversi. Introdução O objetivo deste trabalho consiste na implementação de um programa jogador de Othelo baseado no algoritmo Minimax com cortes alfa-beta. Em média, cada jogador no meio de uma partida possui 10 opções de movimento. Sendo assim para realizar uma busca de profundidade 9 seria necessário investigar 9^10 posições. Por isso foi necessário utilizar o corte alpha beta. O trabalho foi implementado em C++ utilizando o ambiente Visual C++ 6.0. Regras Othelo é um jogo de dois jogadores (azul e vermelho) e é normalmente jogado num tabuleiro 8x8. O objetivo do jogo é preencher o tabuleiro com peças de sua própria cor. Você vence se ao final do jogo existirem mais peças da sua cor no tabuleiro do que peças da cor do seu oponente. No ínicio do jogo, o tabuleiro possui duas peças de cada jogador, colocadas diagonalmente em relação umas às outras no centro do tabuleiro. Cada jogador (na sua vez) coloca uma peça da sua cor no tabuleiro. Essa jogada será válida se ela mudar a cor de pelo menos uma das peças do seu oponente para a sua cor. Você pode fazer isto se quando vc colocar a peça no tabuleiro, ela for colocada no fim de uma linha contínua de peças do seu oponente, tendo no ínicio desta linha uma peça sua. Todas as peças desta linha são então convertidas para sua cor. As linhas podem estar na vertical, diagonal ou horizontal. Regras (cont.) Caso exista mais de uma linha de peças deste tipo, então todas as peças dessas linhas serão convertidas para peças da sua cor. Caso não exista nenhuma jogada possível, o jogador passa a vez para o adversário. O jogo termina quando o tabuleiro está totalmente preenchido ou quando nenhum dos dois jogadores possuir uma jogada. Como Jogar (Iniciando o Jogo) Para iniciar uma partida na qual a primeira jogada será do usuário, basta clicar na opção “Iniciar” do menu e depois na opção “Jogador”. Caso se queira que a primeira jogada seja do computador, basta clicar na opção “Computador”. Como Jogar (Movendo as peças) O jogador humano joga sempre com as peças vermelhas. Para se fazer uma jogada basta clicar com o botão esquerdo do mouse sobre a posição do tabuleiro onde se deseja colocar a nova peça. Esta posição que foi selecionada pelo mouse deve ser uma posição válida como visto nas instruções. Como Jogar (Selecionando nível) Através da opção “Nível” do menu (“Fácil”, “Médio” ou “Difícil”) é possível aumentar ou diminuir a dificuldade do jogo. Na opção “Fácil”, é utilizada a profundidade 2 no algoritmo minmax, 4 na opção “Médio” e 6 na opção “Difícil” Como Jogar (Selecionando heurística) Através da opção “Estratégia” é selecionada a heurística que o algoritmo irá utilizar na função de avaliação do tabuleiro. Existem duas heurísticas disponíveis para escolha: “Posicional” e “Mobilidade”. Heurística Posicional Nesta heurística, para que eu possa calcular a força do tabuleiro em um dado instante, eu vou atribuir os seguintes pesos às casas do tabuleiro: Logo, nesta heurística eu levo em consideração o número de peças de cada jogador e o peso da peça devido à sua posição no tabuleiro. Heurística Mobilidade Nesta heurística, quantos mais movimentos eu puder fazer num determinado tabuleiro, melhor será este tabuleiro. Em outras palavras, para determinar a força do tabuleiro para um determinado jogador (A por exemplo) eu faço a segunda conta: numJogA – numJogB; Onde numJogA é o número de possíveis jogadas do jogador A e numJogB é o número de possíveis jogadas do jogador B. Conclusões Embora este jogo pareça ser bem mais simples que o jogo de damas, até pelo fato de que nele não existem jogadas múltiplas, as dificuldades encontradas foram bem parecidas. Como exemplos de dificuldades podemos citar: - encontrar funções heurísticas - implementação do jogo própriamente dita (interface gráfica, interação com o usuário, etc...) - foi mais difícil encontrar informações relevantes referentes a este jogo do que referentes ao jogo de damas. Bibliografia Stuart Russel, Peter Norvig – Artificial Intelligence a Modern Approach http://www.geocities.com/jnkjavaconnection/othelo.html http://www.angelfire.com/tn/tanjeem/report.html