Massami welington kamigashima



Baixar 5.43 Mb.
Página1/25
Encontro07.10.2019
Tamanho5.43 Mb.
  1   2   3   4   5   6   7   8   9   ...   25


UNIVERSIDADE REGIONAL DE BLUMENAU

CENTRO DE CIÊNCIAS EXATAS E NATURAIS

CURsO DE CIÊNCIA DA COMPUTAÇÃO – BACHARELADO

IMPLEmentação DE UM MOTOR DE JOGOS DE CARTA PARA A PLATAFORMA ANDROID

MASSAMI WELINGTON KAMIGASHIMA

bLUMENAU

2011

2011/2-19

MASSAMI WELINGTON KAMIGASHIMA

IMPLEmentação DE UM MOTOR DE JOGOS DE CARTA PARA A PLATAFORMA ANDROID

Trabalho de Conclusão de Curso submetido à Universidade Regional de Blumenau para a obtenção dos créditos na disciplina Trabalho de Conclusão de Curso II do curso de Ciência da Computação — Bacharelado.

Prof. Paulo César Rodacki Gomes, Dr. - Orientador


bLUMENAU

2011

2011/2-19

IMPLEmentação DE UM MOTOR DE JOGOS DE CARTA PARA A PLATAFORMA ANDROID

Por


massami welington kamigashima

Trabalho aprovado para obtenção dos créditos na disciplina de Trabalho de Conclusão de Curso II, pela banca examinadora formada por:



______________________________________________________

Presidente: Prof. Paulo César Rodacki Gomes, Dr. – Orientador, FURB



______________________________________________________

Membro: Prof. Dalton Solano dos Reis, M. – FURB



______________________________________________________

Membro: Prof. Mauro Marcelo Mattos, Dr. – FURB



Blumenau, 12 de dezembro de 2011

Dedico este trabalho a minha família, amigos e principalmente a todos que me apoiaram direta e indiretamente no desenvolvimento deste trabalho.

AGRADECIMENTOS

A Deus, pela vida que possuo.

À minha família, que está sempre ao meu lado em todos os momentos.

A todos os meus amigos, que me apoiaram e deram forças para continuar.

Ao meu orientador, Paulo César Rodacki Gomes, por ter me dado a idéia e todo apoio para que este trabalho fosse possível.

RESUMO

Este trabalho apresenta a elaboração de um motor de jogos para a plataforma Android em forma de uma biblioteca e sua implementação um protótipo de jogo de pôquer. São apresentados conceitos básicos sobre os principais recursos disponíveis para o desenvolvimento de uma aplicação nesta plataforma. O motor disponibiliza ao desenvolvedor a estrutura básica de um jogo de cartas, tais como a gerência das cartas do baralho, posicionamento dos elementos na tela e a interação das cartas com o usuário.

Palavras-chave: Android. Jogos. Motor de jogos.

ABSTRACT

This work describes the development of a game engine for Android platform in the form of a library and the implementation of a poker game prototype. Basic concepts are also presented on the main resources available to develop an application on this platform. The engine provides the designer with the basic structure of a card game, such as management of the cards in the deck, positioning of elements on the screen and interact of the user with the cards.

Key-words: Android. Games. Game engine.

LISTA DE ilustrações


Figura 1- Imagens de uma partida de pôquer (esq.) e uma partida de paciência (dir.) 17

Figura 2 - Arquitetura da plataforma Android 18

Figura 2 - Arquitetura da plataforma Android 18

Figura 3 - Representação da pilha de atividades 21

Figura 4 - LinearLayout 23

Figura 5 - TableLayout 24

Figura 6 – RelativeLayout 25

Figura 7 – Exemplo de aplicação do MJ3I 35

Figura 8 - Interface do BGE 36

Figura 9 - Interface do Havok Physics 37

Figura 10 – Diagrama de casos de uso 39

Figura 11 – Diagrama de classes do motor de jogos 40

Figura 12 – Pacote engine.Model 41

Figura 13 – Pacote engine.View 42

Figura 14 - Pacote engine.View (cont.) 42

Figura 15 – Tela principal 43

Figura 16 – Tela de seleção de jogo 43

Figura 17 – Tela de seleção de jogadores 43

Figura 18 – Menu de exibição 44

Figura 19 – engine.Control 44

Figura 20 – Pacote engine.GameMode 46

Figura 21 – Diagrama de sequência do caso de uso UC01 47

Figura 22 – Tela de opções 61

Figura 23 – Listagem de cores 61

Figura 24 – Tela de jogo 62

Figura 25 – Opções de apostas 62

Figura 26 – Regulamentos do jogo 63

Figura 27 – Pontuação do jogo 63



LISTA DE QUADROS

Quadro 1 - Estrutura XML de um TableLayout 23

Quadro 2 – Estrutura XML de um RelativeLayout 24

Quadro 3 - Exemplo de inserção de recursos 26

Quadro 4 – AndroidManifest.xml 28

Quadro 5 – res/layout/gamevalues.xml 30

Quadro 6 – res/values/strings.xml 31

Quadro 7 – res/values/attrs.xml 32

Quadro 8 – Múltipla tipagem de constantes 32

Quadro 9 – Acessando constantes tipadas 32

Quadro 10 – res/menu/game_menu.xml 33

Quadro 11 – Instância de menus e tratamento dos botões 33

Quadro 12 – XML parcial da tela de entrada 42

Quadro 13 – Inicialização do GameDisplay 48

Quadro 14 – Inicialização de variáveis do jogo 49

Quadro 15 – setGame() 49

Quadro 16 – Definindo as propriedades do jogo 50

Quadro 17 – Rotina de distribuição das cartas 51

Quadro 18 – Ciclo de desenho 52

Quadro 19 – Atualização da posição das cartas 53

Quadro 20 – Verificação de posição 53

Quadro 21 – Ciclo de desenho de cartas em movimento 54

Quadro 22 – Função onBackPressed() 55

Quadro 23 – Verificação do botão de apostas 56

Quadro 24 – onPause() 58

Quadro 25 – MergeSort de cartas 59

Quadro 26 – Lista de pontuações do jogo de pôquer 59

Quadro 27 – Caso de uso UC01 68

Quadro 28 – Caso de uso UC02 69

Quadro 29 – Caso de uso UC03 70

Quadro 30 – Caso de uso UC04 71

Quadro 31 – Caso de uso UC05 72

Quadro 32 – Caso de uso UC06 73





LISTA DE TABELAS

Tabela 1 – Média de quadros por segundo (fps) 63


LISTA DE SIGLAS

AAPT - Android Asset Packaging Tool



ADT – Android Development Tools

AI - Artificial Intelligence

API – Application Programming Interface

ARGB - Alpha, Red, Green, Blue

BGE - Blender Game Engine

GB – Giga Bytes

GHz – Giga Hertz

GPU – Graphic Processing Unit

IDE - Integrated Development Environment

JIT – Just In Time

J2ME - Java 2 Micro Edition

M3GE - Mobile 3D Game Engine

MB – Mega Bytes

MJ3I - Motor de Jogos 3D para o IPhone OS

OpenGL ES - Open Graphic Library for Embedded Systems

RAM - Random Access Memory

SDK - Software Development Kit

UML - Unified Modeling Language

USB - Universal Serial Bus

XML - eXtensible Markup Language


SUMÁRIO

1 Introdução 12

1.1 OBJETIVOS DO TRABALHO 13

1.2 Estrutura do trabalho 13

2 FUNDAMENTAÇÃO TEÓRICA 14

2.1 Motor de jogos 14

2.2 padrões de jogos de CARTAS 15

2.3 ANDROID 16

Fonte: Android Developers (2011). 17

Figura 2 - Arquitetura da plataforma Android 17

2.4 PROGRAmação JAVA para android 18

2.4.1 FrameLayout 21

2.4.2 LinearLayout 21

2.4.3 TableLayout 22

2.4.4 RelativeLayout 23

2.5 Recursos gráficos no android 24

2.5.1 Bibliotecas 2D 25

2.5.1.1 Views 25

2.5.1.2 Canvas 26

2.5.2 OpenGL ES 26

2.5.2.1 GLSurfaceView 26

2.5.2.2 Renderer 27

2.6 Resources e XMLs 27

2.6.1 AndroidManifest.xml 27

2.6.2 res.layout 29

2.6.3 res.drawable 30

2.6.4 res.values 31

2.6.5 Personalizando menus do sistema 32

2.7 trabalhos correlatos 33

2.7.1 MJ3I 34

2.7.2 M3GE 34

2.7.3 Blender Game Engine (BGE) 35

2.7.4 Havok 36

3 DESENVOLVIMENTO 37

3.1 requisitos principais do problema a ser trabalhado 37

3.2 ESPECIFICAÇÃO 38

3.2.1 Casos de uso 38

3.2.2 Diagramas de classe 38

3.2.2.1 Pacote engine.Model 39

3.2.2.2 Pacote View 41

3.2.2.3 Pacote engine.Control 43

3.2.2.4 Pacote engine.GameMode 44

3.2.3 Diagrama de Sequência 46

3.3 IMPLEMENTAÇÃO 46

3.3.1 Técnicas e ferramentas utilizadas 47

3.3.2 Inicialização da partida 47

3.3.3 Algoritmos gráficos 51

3.3.4 Algoritmos de controle 55

3.3.4.1 onBackPressed() 55

3.3.4.2 onTouch() 56

3.3.4.3 onPause() 57

3.3.4.4 roundWinner() 58

3.3.5 Operacionalidade da implementação 60

3.4 RESULTADOS E DISCUSSÃO 62

4 CONCLUSÕES 64

4.1 EXTENSÕES 65

Referências bibliográficas 66

ANEXO A – UC01 - Iniciar a partida 68

ANEXO B – UC02 - Alterar as configurações de jogo 69

ANEXO C – UC03 - Selecionar as opções de jogo 70

ANEXO D – UC04 - Distribuir as cartas 71

ANEXO E – UC05 - Mover as cartas da mão 72

ANEXO F – UC06 - Modificar o valor da aposta 73




  1. Introdução


Para 2011, tem-se que a previsão de vendas dos smartphones será superior a dos computadores desktop no Brasil (UOL TECNOLOGIA, 2011). Entre os smartphones mais populares estão os que utilizam a plataforma Android. Com esta popularização, há uma grande demanda por desenvolvimento de aplicativos para estes dispositivos, nas quais os aplicativos direcionados para o entretenimento, especialmente jogos, e outros são bastante visados. Porém, para se desenvolver jogos para smartphones, assim como para outras plataformas, é necessário tempo e conhecimento. Neste ponto os motores de jogos1 são muito utilizados para reduzir o tempo de produção dos jogos, pois são reaproveitados vários recursos comuns a múltiplos jogos, de forma que o desenvolvedor possa se dedicar mais aos detalhes específicos do jogo que está desenvolvendo do que com as necessidades padrões dos jogos do gênero.

Diante disso, este trabalho tem como propósito facilitar o entendimento sobre o desenvolvimento de aplicativos dentro da plataforma Android a partir da implementação de um motor de jogos de cartas. Este motor tem como principal característica a gerência dos componentes vitais de um jogo de cartas, tais como o baralho, a pilha de descartes, a diferenciação de valores e naipes das cartas, entre outras características. Este motor atua em três frentes principais: o gerenciamento da estrutura de cartas, a interface com o usuário e as regras de jogo. A primeira frente visa a geração de cartas do baralho e sua sequência de retirada das cartas. A segunda é encarregada de produzir o desenho dos objetos do aplicativo na tela, a interação do toque do usuário com o aplicativo e efetuar as rotinas de movimento das cartas dentro do espaço gráfico. A terceira deve ser responsável pela definição de regras que um jogo deve seguir, tais como a determinação da ordem de prioridade das cartas, a pontuação da partida, os critérios de desempate entre outros. Para validar o motor proposto, foi implementado um protótipo de jogo de pôquer, o qual foi testado tanto em simuladores quanto em um dispositivo Android.


    1. OBJETIVOS DO TRABALHO


O objetivo deste trabalho é desenvolver um motor de jogo para facilitar o desenvolvimento de jogos de cartas para a plataforma Android.

Os objetivos específicos do trabalho são:



  1. disponibilizar um gerador de cartas de um baralho que permita armazenar uma sequência fixa ou aleatória do baralho durante a partida;

  2. disponibilizar funções para a distribuição das cartas entre o(s) jogador(es);

  3. disponibilizar recursos gráficos para a manipulação de cartas pelo cenário;

  4. determinar um conjunto limitado de constantes para auxiliar na implementação do protótipo de jogo, sendo algumas delas: a quantidade de cartas que cada jogador poderá segurar, a sequência das cartas disponíveis no jogo e o valor de cada carta entre outros valores pré-definidos;

  5. disponibilizar um motor para jogos de cartas e validá-lo através de um estudo de caso;

  6. implementar um protótipo de jogo utilizando o motor desenvolvido;

  7. disponibilizar os conjunto de cartas do baralho padrão francês2 e suas variantes.
    1. Estrutura do trabalho


A estrutura deste trabalho é dividido em quatro capítulos, sendo que o segundo capítulo contém a fundamentação teórica necessária para o entendimento do trabalho.

O terceiro capítulo apresenta o desenvolvimento do trabalho utilizando diagramas de casos de uso, de classes e de sequência que definem o motor e o protótipo. Neste capítulo também é apresentado as principais rotinas utilizadas na aplicação além de resultados e discussões que ocorreram durante o desenvolvimento deste trabalho.

Por fim, o quarto capítulo apresenta as conclusões do trabalho e sugestões para trabalhos futuros.

  1. FUNDAMENTAÇÃO TEÓRICA


A seção 2.1 aborda o conceito de motores de jogos. A seção 2.2 trata da definição dos jogos de cartas. A seção 2.3 apresenta um conceito geral sobre a plataforma Android. A seção 2.4 descreve as peculiaridades da programação Java dentro da plataforma. A seção 2.5 traz conceitos sobre os recursos gráficos disponíveis na plataforma. A seção 2.6 descreve a forma como os arquivos XML são utilizados no aplicativo. Por fim, a seção 2.7 apresenta trabalhos correlatos ao projeto.
    1. Motor de jogos


Segundo Ward (2008), um motor de jogos, também conhecido como game engine, é uma abstração de detalhes como as tarefas comuns a jogos, como renderização, física, entrada de dados, interface gráfica com o usuário e até inteligência artificial. Porém, o conteúdo, a modelagem gráfica e texturas, o significado atrás das entradas, colisões e a interação dos objetos no ambiente são os componentes que definem o jogo.

O termo game engine originou-se durante a década de 90 com a popularização de jogos 3D de tiro em primeira pessoa (First Person Shooter) tais como Doom e Quake. Devido ao fato de suas arquiteturas consistirem em componentes bem definidos e separados do núcleo do jogo (renderização, tratamento de colisões ou áudio) da arte, regras de jogo e experiência de jogo, permitiram que seus desenvolvedores criassem novos produtos alterando elementos do mundo e as regras de jogo com mínimas alterações no motor, marcando desta forma o início da “comunidade de mods”. Esta comunidade é composta por grupos de jogadores e pequenos estúdios que constroem novos módulos (mods) ou jogos utilizando ferramentas disponibilizadas pelos desenvolvedores do jogo original (GREGORY; LANDER, 2009, pg.11-12).

Um motor de jogos pode ser desenvolvido generalizando-se partes da implementação para qualquer gênero de jogo, inclusive jogos multiplataforma. Porém, vários autores, como Gregory e Lander (2009, pg.11-12), afirmam que para fins de otimização e melhor resultado, deve ser definida uma plataforma e um gênero específico para o motor.

Atualmente são encontrados na internet inúmeros motores de jogos disponíveis gratuitamente ou licenciados por seus desenvolvedores para diversos fins. Não necessariamente específicas para jogos, estes motores também podem ser encontrados na produção de animações e filmes, além de simuladores para fins educativos, militares entre outros. Na maior parte dos casos, costuma-se encontrá-las em forma de APIs ou SDKs, e principalmente no caso das gratuitas, é comum encontrar comunidades de desenvolvimento através de fóruns nas quais os desenvolvedores podem sugerir e compartilhar novos recursos, melhorias ou corrigir problemas encontrados.


    1. padrões de jogos de CARTAS


Segundo Schuytema e Manyen (2005, p. 92), um jogo é uma atividade composta por um conjunto de ações limitadas a um conjunto de regras, direcionadas para um determinado fim. Estas regras servem para delimitar e contextualizar as ações do jogador, além de criar situações de desafio e oposição ao jogador. Os jogos de cartas, muitas vezes associados como “jogos de azar”, também compartilham um conjunto de regras com o intuito de se alcançar um fim. Atualmente são encontrados vários jogos de cartas com suas próprias regras e cartas personalizadas, porém, este documento trata somente de jogos nas quais são utilizadas as cartas existentes no baralho francês.

O baralho francês, assim como o espanhol, é composto por quatro conjuntos de cartas denominados naipes: Paus (♣), Espadas (♠), Copas (♥) e Ouros (♦). Cada naipe é composto por um conjunto de 13 cartas, contendo os valores de 2 a 10 e as cartas: Ás (A ou Ace), Valete (J ou Jack), Dama (Q ou Queen) e Rei (K ou King), que representam os valores 1,11,12 e 13, respectivamente. Em alguns jogos, utiliza-se um par de cartas especiais sem naipe chamados “Coringas”. Existem, porém, alguns jogos onde há uma sequência diferente de valores e naipes que ainda podem conter variações dependendo da regionalidade dos jogadores, como por exemplo, o jogo de truco, que possui regras diferentes em cada região do Brasil e em outros países onde é jogado. Ainda há regras como as do jogo de canastra que permite o uso do Ás como o décimo quarto valor (após o K), porém se esta carta for utilizada para este fim, não poderá ser utilizada para iniciar uma nova sequência.



A origem dos jogos de cartas é desconhecida, mas acredita-se que originou na China por volta do século X sendo trazido por árabes para a Europa durante o século XIV (JOGATINA, 2009). Acredita-se que o baralho francês foi inventado por um pintor chamado Jacquemin Gringonneur, sob encomenda do rei Carlos VI de França. Gringonneur elaborou um baralho de forma que cada naipe representasse um grupo social da França: copas para o clero, ouro para a burguesia, espadas para os militares e paus para os camponeses (JOGOS DE CARTAS, 2007). A Figura 1, ilustra alguns jogos populares na atualidade.

Fonte: Genkistar (2011).



Figura 1- Imagens de uma partida de pôquer (esq.) e uma partida de paciência (dir.)



  1   2   3   4   5   6   7   8   9   ...   25


©aneste.org 2017
enviar mensagem

    Página principal