Desenvolvimento de um Jogo de Xadrez em Java

Documentos relacionados
Design de Interface - Avaliação Final

ATIVIDADES PRÁTICAS SUPERVISIONADAS

JOGOS LIVRO REGRAS M AT E M Á T I CO S. 11.º Campeonato Nacional

LABORATÓRIO DE INTRODUÇÃO A CIÊNCIA DE COMPUTAÇÃO TRABALHO SEMESTRAL:

2 Versão 1: Funcionalidade Básica e Interface Web

Trabalho Final de SISTEMAS INTEGRADOS DE MANUFATURA

Aula 10 Arquitetura de Software e Exercício. Alessandro Garcia LES/DI/PUC-Rio Abril de 2017

Gatos & Cães Simon Norton, 1970s

EDITAL DO 2º TORNEIO DE XADREZ DEL REI XADREZ

Semáforo. Um tabuleiro retangular 4 por 3. 8 peças verdes, 8 amarelas e 8 vermelhas partilhadas pelos jogadores.

Gatos & Cães Simon Norton, 1970s

Protótipo de Software de Reconhecimento de Voz Para Navegação em Jogos, Utilizando Rede Neural Artificial

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CAMPUS CURITIBA ENGENHARIA ELETRÔNICA FELIPE GONÇALVES GARCIA FELIPE MARTINS DE LIMA

Programação orientada a objetos

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

IrrRPG Builder Uma Ferramenta Livre Para Desenvolvimento de Jogos Eletrônicos de RPG

Programação Orientada a Objetos

GRADUAÇÃO EM ANÁLISE E DESENVOLVIMENTO PROGRAMAÇÃO DE COMPUTADORES I Trabalho Final Anual TFA

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

1ª Colocação 10 pontos. 2ª Colocação 08 pontos. 3ª Colocação 06 pontos

Introdução ao Zend Framework 2

Plano de Ensino PROGRAMAÇÃO ORIENTADA A OBJETOS

Algoritmos e Programação

Prof. Esp. Fabiano Taguchi

XADREZ REGRAS BÁSICAS INTRODUÇÃO O xadrez, diferentemente de muitos jogos, não depende de sorte. O desenvolver do jogo não depende do resultado de

WAR. Equipe de desenvolvimento. Sumário

CAPÍTULO 1. Os elementos. O jogo de xadrez é um desafio para a mente. J. W. von Goethe O TABULEIRO DE XADREZ

BCC202 - Estrutura de Dados I

Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa:

» O jogo: - é dividido em 3 semanas, cada uma com 7 dias/turnos. Cada turno divide-se em 2 fases:

Trabalho GA - Editor de Cenário Isométrico

Projeto Xadrez Entrega 01: Polimorfismo e Herança

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

Exercícios: Arquivos

Spider 4 em Linha. (Trabalho 12) Relatório de Avaliação Intercalar do 1º Trabalho Prático da Disciplina de Programação em Lógica

CONTEÚDO PROGRAMÁTICO

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Prof. Fabiano Taguchi

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

O uso da Teoria dos Grafos no Jogo Icosiano

PROGRAMACAO E INTEGRACAO DE JOGOS I

Card Tree Creator. Um Sistema para a criação de árvores de cartões.


Manual do Sistema CorteBi Interface Gráfica

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Orientação a Objetos (OO)

Desenvolvendo aplicações Java

Gerando um programa executável a partir de um módulo Python

Programação Estruturada Orientada a Objetos

1.5 PROGRAMAÇÃO DE JOGOS EM AMBIENTE DE REA LIDADE AUMENTADA AMBIENTES INTEGRADOS DE DESENVOLVIMENTO DE JOGOS 19

Programação Orientada a Objetos

Técnicas Avançadas de Programação

Introdução à Computação

Tutorial de instalação e configuração do Software Giga VMS

XADREZ NA UFG. Módulo I -Introdução. Prof. Dr. André Carlos Silva Profa. MSc. Elenice Maria Schons Silva

Licenciatura em Informática

Manual do KSquares. Matt Williams Revisor: Eugene Trounev Tradução: Luiz Fernando Ranghetti Tradução: André Marcelo Alvarenga

Aula 11 Introdução ao Java Script

SME Introdução à Programação de Computadores Primeiro semestre de Trabalho: jogo Semáforo

Árvore de Jogos Minimax e Poda Alfa-Beta

Programação Orientada a Objetos

Introdução a Tecnologia da Informação

Aula 9 Especificação de Requisitos Exercício

PORTUGOL/PLUS: UMA FERRAMENTA DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO BASEADO NO PORTUGOL

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

Programação Orientada a Objetos

Introdução à Ciência da Computação

INF ALGORITMOS E PROGRAMAÇÃO TRABALHO PRÁTICO

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

[GUIA RÁPIDO: OFFICE SWAY]

Diagrama de Componentes e Implantação

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Introdução à Engenharia ENG1000

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

AULA 1 INTRODUÇÃO AO JAVA

Engenharia de Software

Introdução a Programação Web com PHP

ENGENHARIA DE SOFTWARE

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Engenharia de Software Orientada a objetos. Prof. Rogério Celestino dos Santos

Transcrição:

Desenvolvimento de um Jogo de Xadrez em Java Bruno Fontana Canella 1, Fabricio Giordani 2 1 Acadêmico do curso de Ciência da Computação Unidade Acadêmica de Ciências, Engenharias e Tecnologias - Universidade do Extremo Sul Catarinense (UNESC) Criciúma, SC - Brasil 2 Professor(a) do curso de Ciência da Computação - Unidade Acadêmica de Ciências, Engenharias e Tecnologias - Universidade do Extremo Sul Catarinense (UNESC) Criciúma, SC - Brasil brunocanella@yahoo.com.br, fgiordani@gmail Resumo. Desenvolvido durante as aulas do curso de ciências da computação da UNESC, e aprimorado durante o decorrer do ano, este artigo irá demonstrar alguma das características presentes no desenvolvimento de um jogo de Xadrez. Para sua codificação, foi utilizado principalmente a linguagem de programação Java, em conjunto da linguagem Lua, a qual foi utilizada para realizar os cálculos de movimentação das peças no tabuleiro. Palavras chave: Programação; Java; Lua; Jogo; Xadrez. 1. Proposta do Trabalho Durante a disciplina de Tópicos Especiais I, até então presente na 5ª fase da grade do curso de ciências da computação da UNESC, foi sugerido o desenvolvimento de um software simples, o qual deveria aproveitar o conhecimento adquirido até então durante o curso, principalmente os da disciplina em questão. Este trabalho deveria fazer uso intensivo dos componentes de interface Swing, bem como outros objetos presentes no pacote de desenvolvimento distribuído na JDK. Este software também deveria ser capaz de persistir informações que o usuário informaria, além de manipulação de arrays e objetos personalizados. Sendo assim, foi discutido com o professor Fabrício Giordani a possibilidade na confecção de um jogo de Xadrez, feito inteiramente em Java, que implementasse todos os quesitos pré estipulados. Uma vez confirmado, o projeto foi levado adiante e apresentado com sucesso no decorrer das aulas. Contudo, como forma de alcançar um objetivo mais audacioso, o projeto do Jogo de Xadrez foi expandido, recebendo mais algumas características para sua apresentação no Workshop de trabalhos da SulComp, evento realizado anualmente na UNESC e que atualmente se encontra em sua quarta edição. Os tópicos que seguem apresentarão algumas das principais características presentes no projeto do jogo.

2. Características Principais do Projeto Originalmente, o jogo de xadrez desenvolvido em aula possuía uma interface gráfica, a qual demonstrava opções como controles do jogo, para inicio de uma nova partida, carregar uma partida salva e salvar uma partida em andamento, além do controle de movimentação das peças pelo tabuleiro com o auxilio de um mouse, onde ao clicar em uma peça, esta era transferida para o cursor do mouse, e ao clicar novamente no tabuleiro a peça era devolvida novamente para o mesmo, sendo que se houvesse uma peça ocupando a posição em que a peça em movimento foi designada, a peça que estava na posição ocupada era eliminada e substituída pela peça em movimento. É importante ressaltar que nesta etapa do projeto, não havia nenhum controle de regras do jogo, sendo que era possível matar suas próprias peças, ou então jogar diversas vezes com as peças de uma mesma cor. Na versão final do projeto, existe todo um controle das regras do jogo, sendo que cada peça possui sua limitação baseada no tipo de peça que ela é, Ex: Peão, Cavalo. Também não é mais possível matar peças de seu próprio time, nem jogar diversas vezes as peças de mesma cor. A movimentação agora é alternada entre as peças de cor branca e preta. Foi implementado também uma lista, demonstrando o histórico de jogadas da partida, o qual foi adicionada a classe de persistência do jogo. Como forma de desafio, a parte de controle de movimentação das peças no tabuleiro foi implementada com o uso da linguagem de programação Lua, desenvolvida pela PUC do Rio de Janeiro. Está linguagem é muito utilizada em jogos para a criação de scripts, permitindo assim que possam ser feitas alterações nas regras do jogo, mesmo enquanto este se encontra em execução, evitando assim diversas compilações do código fonte do jogo para alterar o mesmo, seguindo os princípios dos motores de jogos (Game Engine). 3. Detalhes do projeto Uma das requisições na construção da primeira fase do projeto, era de que o software em questão deveria ser fortemente orientado a objetos. A figura que segue, assim como os demais sub tópicos, irão explicar em detalhes como ficou a estruturação do código:

Figure 1. Figura demonstrando a esquematização das classes do jogo. 3.1. Classe Xadrez Esta classe é responsável por fazer toda a inicialização do programa, criando os objetos de persistência, interface, e controle do tabuleiro. É a classe principal do projeto. 3.2. Classe XadrezRegra Nesta classe estão contidas boa parte das verificações das regras do jogo, como a determinação das condições de fim de jogo, vitória ou empate, turno dos jogadores, entre outros. 3.3. Classe XadrezInterface A classe XadrezInterface é responsável por criar todos os componentes que servirão para comunicação com o usuário do jogo. Nela são criadas as opções do jogo, são montadas as partes visuais do tabuleiro, e também demonstra o histórico de jogadas em uma lista. 3.4. Classe XadrezPersistencia Encarregada da persistência dos dados do jogo, ou seja, a gravação e recuperação de dados. Em geral, as informações persistentes são as posições das peças e o histórico de jogadas. 3.5. Classe XadrezTabuleiro Responsável por manter um registro das peças que estão em jogo, além do formato do tabuleiro em si. Ela possui diversos objetos do tipo XadrezPiso, os quais ficam armazenados em uma array, que por padrão possui tamanho 8x8, igual ao do jogo.

3.6. Classe XadrezPiso Possui herança no componente JPanel, onde além das propriedades comuns, recebe também o código necessário para armazenar e representar graficamente uma peça do jogo de xadrez. 3.7. Classe XadrezPeca É a representação de uma peça de xadrez do mundo real, no jogo. Ela possui um método abstrato de movimentação e detecção de movimentos válidos, os quais são sobreescritos pelas classes que herdam desta peça. 3.8. Classes que herdam de XadrezPeca Estas seriam as classes PeaoPeca, CavaloPeca, BispoPeca, TorrePeca, RainhaPeca e ReiPeca. Cada classe sobre escreve os métodos de movimentação de XadrezPeca, bem como possui sua própria constante, contendo o endereço de sua imagem de exibição 4. Linguagem Lua Como citado anteriormente no projeto, um pequeno trecho do código foi escrito em Lua, mais precisamente a parte de verificação e movimentação em sí das peças do tabuleiro. Para realizar esta integração entre as duas linguagens, foi utilizado uma biblioteca chamada LuaJava, a qual realize todas as chamadas das DLL s da linguagem Lua para o código em Java. Cada classe que herda de XadrezPeca é obrigada a especificar a sua rotina de movimentação. Nesta parte do programa, foi realizada a chamada de funções escritas em Lua, que estavam em arquivos separados do projeto principal, para avaliar a movimentação de cada peça. Esta chamada dinâmica de verificação permite a alteração nas regras de movimentação das peças, sem a necessidade de recompilação do software, ou até mesmo o seu fechamento. 5. Conclusão Com o fim deste trabalho, foi possivel contruir um pequeno e funcional jogo de xadrez, utilizando apenas ensinamentos adquiridos no curso de ciencias da comutação da UNESC até a 5ª fase. A adição de recursos extras, como a utilização de uma linguagem de scripts, como a Lua, tiveram de ser aprendidos por conta do acadêmico, mas são de facil acesso e aprendizagem. Referencias Davison, Andrew. (2005) Killer Game Programming in Java, Edited by Brett McLaughlin, O Reilly Media, United States of America.

Buckland, Mat. (2005) Programming Game AI by Example, Wordware Publishing Inc, United States of America. Martins, Guilherme e Eduardo Jason Santos, Luis e Ponte, Thiago. (2004) LuaJava: A Script Tool for Java, http://www.keplerproject.org/luajava/, Junho. Tecnologia em Computação Gráfica da PUC Rio. (1997) A Linguagem de Programação Lua, http://www.lua.org/portugues.html. Fevereiro. Sun MicroSystems. Java SE at a Glance, http://java.sun.com/javase/. Janeiro.