18
Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

Embed Size (px)

Citation preview

Page 1: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

Damas3D

Programação em Lógica

Nelson Jorge Silva Rodrigues – ei00070

Ricardo Jorge Marques Veloso – ei00125

Page 2: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

22

Damas3DDamas3D

• EnquadramentoEnquadramento• Introdução ao jogoIntrodução ao jogo• Módulo de lógicaMódulo de lógica• Módulo de visualizaçãoMódulo de visualização• Comunicação entre os módulosComunicação entre os módulos• ConclusõesConclusões

Page 3: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

33

EnquadramenEnquadramentoto

Este trabalho enquadra-se na proposta Este trabalho enquadra-se na proposta para o desenvolvimento de um jogo de para o desenvolvimento de um jogo de tabuleiro, feita para a cadeira de tabuleiro, feita para a cadeira de programação em lógica (módulo de lógica) e programação em lógica (módulo de lógica) e laboratório de computação (módulo de laboratório de computação (módulo de visualização).visualização).

Damas3D

Page 4: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

44

Damas3DDamas3D

• EnquadramentoEnquadramento• Introdução ao jogoIntrodução ao jogo• Módulo de lógicaMódulo de lógica• Módulo de visualizaçãoMódulo de visualização• Comunicação entre os módulosComunicação entre os módulos• ConclusõesConclusões

Page 5: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

55

Introdução ao jogoIntrodução ao jogoDamas3D

• Cada jogador começa com Cada jogador começa com 12 pecas, de uma determinada 12 pecas, de uma determinada cor, brancas ou pretas.cor, brancas ou pretas.

• O jogo efectua-se O jogo efectua-se movimentando as peças sobre movimentando as peças sobre as casas pretas e nas as casas pretas e nas diagonais, em direcção ao diagonais, em direcção ao adversário.adversário.

Regras

O jogo resume-se a um tabuleiro de 8x8 casas, alternadamente O jogo resume-se a um tabuleiro de 8x8 casas, alternadamente brancas e pretas, ordenadas alfabeticamente nas colunas e brancas e pretas, ordenadas alfabeticamente nas colunas e numeradas nas linhas.numeradas nas linhas.

Page 6: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

66

Damas3D

• Jogada simples: Movimentação das peças para a casa Jogada simples: Movimentação das peças para a casa seguinte;seguinte;

• Jogada de comer: Comer uma peça adversaria, avançando Jogada de comer: Comer uma peça adversaria, avançando assim duas casas. Este tipo de jogada pode ser encadeado;assim duas casas. Este tipo de jogada pode ser encadeado;

• Jogada de dama: Quando uma peça atinge a última linha do Jogada de dama: Quando uma peça atinge a última linha do lado oposto, obtém-se a dama que se representa pela lado oposto, obtém-se a dama que se representa pela sobreposição de duas peças normais. Uma dama pode sobreposição de duas peças normais. Uma dama pode percorrer mais de uma casa e em qualquer sentido, percorrer mais de uma casa e em qualquer sentido, diagonalmente.diagonalmente.

Introdução ao Introdução ao jogojogo

O objectivo do jogo é impedir que o adversário tenha jogadas O objectivo do jogo é impedir que o adversário tenha jogadas possíveis.possíveis.A maneira mais fácil de conseguir este objectivo é comer as A maneira mais fácil de conseguir este objectivo é comer as peças todas do adversário.peças todas do adversário.

Objectivo do jogo

Page 7: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

77

Damas3DDamas3D

• EnquadramentoEnquadramento• Introdução ao jogoIntrodução ao jogo• Módulo de lógicaMódulo de lógica• Módulo de visualizaçãoMódulo de visualização• Comunicação entre os módulosComunicação entre os módulos• ConclusõesConclusões

Page 8: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

88

Módulo de lógicaMódulo de lógica Damas3D

Programa desenvolvido em Prolog.Programa desenvolvido em Prolog.

Este módulo contém o motor do jogo, implementando todos Este módulo contém o motor do jogo, implementando todos os predicados para a validação e efectuação de uma jogada, os predicados para a validação e efectuação de uma jogada, assim como a implementação de um modo em que o assim como a implementação de um modo em que o computador actue como um ou ambos os jogadores.computador actue como um ou ambos os jogadores.

Representação do tabuleiro“_” (underscore) – casa vazia

“0” – Peça simples branca

“@” – Peça simples preta

“B” – Dama branca

“P” – Dama Preta

Page 9: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

99

Módulo de lógicaMódulo de lógica Damas3D

Destaca-se na imagem o modo de introdução das jogadas: Destaca-se na imagem o modo de introdução das jogadas: ColunaInicialLinhaInicial…ColunaFinalLinhaFinalColunaInicialLinhaInicial…ColunaFinalLinhaFinal

O jogador a efectuar a O jogador a efectuar a jogada é representado jogada é representado como “brancas” ou como “brancas” ou “pretas”“pretas”

Interface no módulo de lógica

Page 10: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1010

Damas3DDamas3D

• EnquadramentoEnquadramento• Introdução ao jogoIntrodução ao jogo• Módulo de lógicaMódulo de lógica• Módulo de visualizaçãoMódulo de visualização• Comunicação entre os módulosComunicação entre os módulos• ConclusõesConclusões

Page 11: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1111

Damas3DMódulo de Módulo de visualizaçãovisualização

Módulo desenvolvido utilizando a linguagem Java com as Módulo desenvolvido utilizando a linguagem Java com as extensões que possibilitam a criação e visualização de extensões que possibilitam a criação e visualização de mundos 3D (Java3D).mundos 3D (Java3D).

O ambiente de jogo consiste essencialmente de um O ambiente de jogo consiste essencialmente de um tabuleiro de damas em 3 dimensões, um marcador do tabuleiro de damas em 3 dimensões, um marcador do número de jogos ganhos por cada jogador, e um número de jogos ganhos por cada jogador, e um temporizador que marca o tempo para efectuar uma temporizador que marca o tempo para efectuar uma jogada.jogada.

A interacção com o utilizador baseia-se na utilização do rato A interacção com o utilizador baseia-se na utilização do rato para movimentar as peças no tabuleiro de jogo, devendo no para movimentar as peças no tabuleiro de jogo, devendo no caso de jogadas compostas o utilizador passar por todas as caso de jogadas compostas o utilizador passar por todas as casas que compõem a jogada.casas que compõem a jogada.

Page 12: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1212

Existe a possibilidade de mudar o aspecto do ambiente de Existe a possibilidade de mudar o aspecto do ambiente de jogo e de ver o filme do jogo.jogo e de ver o filme do jogo.

Módulo de Módulo de visualizaçãovisualização

Damas3D

Page 13: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1313

Damas3DDamas3D

• EnquadramentoEnquadramento• Introdução ao jogoIntrodução ao jogo• Módulo de lógicaMódulo de lógica• Módulo de visualizaçãoMódulo de visualização• Comunicação entre os módulosComunicação entre os módulos• ConclusõesConclusões

Page 14: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1414

Comunicação entre os Comunicação entre os módulosmódulos

Damas3D

A comunicação entre o módulo de lógica e o módulo A comunicação entre o módulo de lógica e o módulo de visualização efectua-se utilizando o Jasper, uma de visualização efectua-se utilizando o Jasper, uma interface fornecida pelo ambiente de interface fornecida pelo ambiente de desenvolvimento SICStus Prolog, que permite desenvolvimento SICStus Prolog, que permite construir uma aplicação que facilmente integra duas construir uma aplicação que facilmente integra duas linguagens de programação: Prolog e Java.linguagens de programação: Prolog e Java.

Page 15: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1515

Damas3DDamas3D

• EnquadramentoEnquadramento• Introdução ao jogoIntrodução ao jogo• Módulo de lógicaMódulo de lógica• Módulo de visualizaçãoMódulo de visualização• Comunicação entre os módulosComunicação entre os módulos• ConclusõesConclusões

• MelhoramentosMelhoramentos• ConclusõesConclusões

Page 16: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1616

MelhoramentosMelhoramentos Damas3D

• Utilização de sockets para comunicação entre os Utilização de sockets para comunicação entre os dois módulosdois módulos

• Melhorar funções de avaliação do mini-max;Melhorar funções de avaliação do mini-max;

• Melhorar o próprio algoritmo para cortes Alpha-Melhorar o próprio algoritmo para cortes Alpha-Beta.Beta.

Page 17: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1717

ConclusõesConclusões Damas3D

• A linguagem de programação Prolog adequa-se A linguagem de programação Prolog adequa-se perfeitamente ao tipo de aplicação que perfeitamente ao tipo de aplicação que pretendiamos desenvolver, tendo sido bastante facil pretendiamos desenvolver, tendo sido bastante facil a sua aprendizagem.a sua aprendizagem.

• O Java3D embora seja muito fácil de utilizar sofre O Java3D embora seja muito fácil de utilizar sofre de sérias lacunas ao nível da performance.de sérias lacunas ao nível da performance.

• A interface utilizada para ligar as duas linguagens A interface utilizada para ligar as duas linguagens de programação, o Jasper, revelou-se muito dificil de de programação, o Jasper, revelou-se muito dificil de utilizar, bem como pouco robusta.utilizar, bem como pouco robusta.

Page 18: Damas3D Programação em Lógica Nelson Jorge Silva Rodrigues – ei00070 Ricardo Jorge Marques Veloso – ei00125

1818

Damas3DDamas3D

Nelson Jorge Silva Rodrigues – [email protected]

Ricardo Jorge Marques Veloso – [email protected]

Questões?