Massami welington kamigashima



Baixar 5.43 Mb.
Página25/25
Encontro07.10.2019
Tamanho5.43 Mb.
1   ...   17   18   19   20   21   22   23   24   25
Figura 27 – Pontuação do jogo
    1. RESULTADOS E DISCUSSÃO


Este trabalho trouxe como principal desafio, o entendimento das diferenças de abordagem entre a linguagem Java tradicional para o desenvolvido na plataforma Android. Devido à limitação de hardware e a preocupação com o desempenho da aplicação, por várias vezes foram encontradas dificuldades em manter o funcionamento da aplicação a uma taxa de atualização de quadros viável, sendo os conselhos sugeridos por Android Developers (2011), muito úteis durante o desenvolvimento da aplicação.

Uma das dificuldades encontradas na elaboração do trabalho foi em relação à explicação formal de parte dos desenvolvedores da plataforma em relação a alguns conceitos, sendo eles mais focados em passar uma visão geral dos recursos e aprofundando na documentação da linguagem. Ocorreram algumas dificuldades ao utilizar alguns métodos e atributos devido à utilização de rotinas desaconselhadas pelos desenvolvedores, tais como o problema de falta de memória utilizando o laço for utilizando uma variável de tamanho sendo solucionado trocando estes for pelo laço for-each em todas situações disponíveis. Um detalhe importante que durante a implementação não foi lembrado foi que ao utilizar a rotação das cartas na tela, por padrão as matrizes são rotacionadas utilizando o ponto zero da View, efetuando um efeito diferente do esperado quando inserido junto a um efeito de translação da matriz. A especificação não é clara neste aspecto, mas é possível resolver este problema passando parâmetros adicionais de x e y para definir o centro de rotação da matriz. Porém em contra partida, quando a documentação não parece clara o suficiente, é possível encontrar através da internet a solução muitas vezes fornecida para outros desenvolvedores com a mesma dificuldade, sendo assim possível resolver problemas com certa facilidade.

Mesmo que o simulador seja uma boa saída para testar o aplicativo, sua taxa de desempenho gráfico é muito inferior a de um dispositivo real. A Tabela 1 ilustra a diferença da taxa de quadros entre o dispositivo e os simuladores utilizados.
Tabela 1 – Média de quadros por segundo (fps)





2 Jogadores

3 Jogadores

4 Jogadores

GT-I9100

35

33

33

Desktop

6.5

6

5.5

Notebook

5

3.5

3.5

A utilização de arquivos XML permite ao desenvolvedor uma maior transparência no desenvolvimento de um projeto, permitindo assim que seja possível alterar as configurações do jogo sem a necessidade de se preocupar tanto com a programação em si.

Mesmo com o grande avanço na tecnologia para os dispositivos móveis, a mesma preocupação devido à limitação de recursos do aparelho encontrada por Pamplona (2005) ainda existe. Não há dúvidas que os avanços dos últimos anos permitiram ao desenvolvedor uma maior liberdade para utilizar mais recursos computacionais devido às melhorias dos dispositivos permitindo assim um melhor resultado para o usuário final.

Assim como o trabalho de Takano (2009), este trabalho se focou no resultado gráfico da aplicação, não sendo utilizadas rotinas complexas para tratamentos de física dos objetos, porém, assim como o trabalho dele, houve uma preocupação em relação à interação do usuário com a interface do aplicativo através de toques.

Apesar de utilizar a linguagem Java assim como Pamplona (2005), há algumas diferenças em relação ao Java para o Android, sendo este último otimizado para essa plataforma de forma que haja um melhor resultado de desempenho dado os recursos disponíveis em cada aparelho. Porém, a preocupação com o consumo de recursos, como a memória e processamento, ainda existe e afeta diretamente na durabilidade da bateria do dispositivo.

O protótipo ocupa aproximadamente 1.13 MB de memória sendo dessas sua maior parte utilizada para armazenar arquivos de imagem e de mídia. Os dados armazenados na memória através da classe SharedPreferences ocupam cerca de 4KB.


  1. CONCLUSÕES


Este trabalho apresentou a implementação de um motor de jogos de cartas na forma de uma biblioteca de funções dividida em várias atividades com funções específicas. As classes implementadas permitiram manipular os recursos gráficos da aplicação e a configuração do jogo de forma mais simplificada utilizando recursos provenientes de arquivos XML. Desta forma, foi possível concluir todos os objetivos propostos no trabalho.

Este trabalho disponibiliza um conjunto de funções e conceitos que permitem ao desenvolvedor entender melhor o desenvolvimento de aplicativos na plataforma e a facilitar o desenvolvimento de outros jogos de cartas reaproveitando a lógica das funções aqui apresentadas.

O aplicativo desenvolvido apresentou algumas semelhanças com alguns dos trabalhos correlatos em relação ao tratamento de controle de cena ao receber um evento de toque na tela, no modelo de estrutura utilizado (MVC) e no conceito de auxiliar o desenvolvedor no entendimento do ambiente e disponibilizando recursos para o desenvolvimento de um novo aplicativo.

A plataforma Android disponibiliza através de sua API uma série de classes e funções que permitem ao desenvolvedor interagir de muitas formas com os dispositivos onde suas aplicações irão rodar, permitindo tanto a interação com hardware como com outros softwares se estes permitirem o acesso para tal.

As ferramentas disponíveis pelo Android SDK facilitam muito para o desenvolvedor efetuar seus testes utilizando um dispositivo virtual, utilizar o modo debug tanto no simulador como no dispositivo ou salvar imagens da tela do dispositivo.

    1. EXTENSÕES


O protótipo desenvolvido foi projetado de forma que somente um usuário possa jogar o jogo por vez. Explorando as técnicas de redes e protocolos, sugere-se que o aplicativo seja estendido para o modo multiplayer, permitindo assim que vários jogadores com seus dispositivos em rede local ou pela internet possam participar de uma mesma partida. Com esta implementação, sugere-se que seja implementado também, uma pontuação online e ranking, permitindo uma maior competição entre os jogadores.

Este trabalho poderia ter explorado ainda mais a fundo a utilização de XMLs para tornar o aplicativo mais dinâmico, pois há muitos outros recursos disponíveis na plataforma através deles, porém este estudo fica como sugestão para trabalhos futuros.

Referências bibliográficas

ANDROID DEVELOPERS. The developer’s guide, [S.l.], 2011. Disponível em: . Acesso em: 15 mar. 2011.

______. Dalvik JIT. [S.l.], 2010. Disponível em: . Acesso em: 17 mar. 2011.

GENKISTAR. Poker gratuit, [S.l.], 2011. Disponível em: . Acesso em: 26 set. 2011.

GREGORY, Jason; LANDER, Jeff. Game engine architecture. Wellesley: A. K. Peters, 2009.

HAVOK INC. Available games. [S.l.], 2011a. Disponível em: . Acesso em: 22 mar. 2011.

______. Havok product family. [S.l.], 2011b. Disponível em: . Acesso em: 26 mar. 2011.

______. Product screenshots. [S.l.], 2011c. Disponível em: . Acesso em: 26 mar. 2011.

JOGATINA. A história do baralho – os dias de hoje. [S.l.], 2009. Disponível em: . Acesso em: 27 set. 2011.

JOGOS DE CARTAS. Jogos de cartas - o mundo das cartas em suas mãos. [S.l.], 2007. Disponível em: . Acesso em: 27 set. 2011.

PAMPLONA, Vitor F. Um protótipo de motor de jogos 3D para dispositivos móveis com suporte a especificação móbile 3D Graphics API for J2ME. 2005. 83 f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.

SCHUYTEMA, Paul; MANYEN, Mark. Game development with LUA. Hingham: Charles River Media, 2005.

TAKANO, Rafael H. MJ3I: um motor de jogos 3D para o iPhone OS. 2009. 52 f. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau.

UOL TECNOLOGIA. Venda de smartphones deve superar a de computadores no Brasil em 2011, diz IDC. [S.l.], 2011. Disponível em: . Acesso em: 11 mar. 2011.

VELDHUIZEN, Bart. Game engine. Amsterdam, [2010a?]. Disponível em: . Acesso em: 22 mar. 2011.

______. Features. Amsterdam, [2010b?]. Disponível em: . Acesso em: 26 mar. 2011.

WARD, Jeff. What is a game engine? [S.l.], abr. 2008. Disponível em: . Acesso em: 20 mar. 2011.

ANEXO A – UC01 - Iniciar a partida

O caso de uso ilustrado no Quadro 27 descreve como o Usuário interage com o jogo selecionado no protótipo em seu dispositivo real.


UC01 – Iniciar a partida

Descrição

Este caso de uso descreve os procedimentos que o Usuário deve seguir para iniciar uma partida de pôquer e finalizar uma rodada.

Pré-condição

Possuir o aplicativo instalado no dispositivo.

Cenário principal

1. O Usuário seleciona a opção de novo jogo (Figura 15).

2. A aplicação lista os jogos disponíveis (Figura 16).

3. O Usuário seleciona um modo de jogo.

4. A aplicação exibe a quantidade de adversários disponíveis (Figura 17).

5. O Usuário seleciona quantos adversários deseja enfrentar.

6. A partida é iniciada e as cartas são distribuídas para os jogadores.

7. O Usuário seleciona o valor da aposta.

8. Os adversários selecionam manter o valor da aposta.

9. A aplicação avalia a maior pontuação da rodada.

10. O jogador que ganhar a rodada recebe o valor da aposta.

11. Nova rodada se inicia.


Cenário alternativo 1

No passo 4, caso a partida não permita adversários, pular para o passo 6.

Cenário alternativo 2

No passo 7, caso o usuário selecione aumentar o valor da aposta, os adversários podem manter o valor da aposta ou aumentar novamente.

2.1. Se todos os adversários selecionarem manter o valor da aposta, pular para o passo 9.

2.2. Caso algum dos adversários selecione aumentar a aposta, a rodada de apostas continua enquanto não chegar a quatro aumentos nas apostas ou concluir a rodada de apostas. Voltar para o passo 7.


Cenário alternativo 3

No passo 10, caso haja empate entre dois ou mais jogadores, o valor da aposta é dividido entre os vencedores.

Pós-condições

O Usuário pode finalizar o jogo ganhando ou perdendo de seus adversários, encerrando a partida ou saindo da aplicação e iniciando nova partida.

Quadro 27 – Caso de uso UC01

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

Este caso de uso ilustrado no Quadro 28 descreve como o Usuário pode interagir com as opções disponíveis na aplicação, opções estas que não interferem no funcionamento do jogo.



UC02 – Alterar as configurações do jogo

Descrição

Algumas propriedades dos jogos podem ser alteradas, como o nome do jogador ou o verso das cartas, este caso de uso descreve os passos desta alteração.

Pré-condição

Possuir o aplicativo instalado no dispositivo.

Cenário principal

1. O Usuário seleciona a opção de opções (Figura 22).

2. A aplicação lista as opções disponíveis (Figura 23).

3. O Usuário altera seu nome de exibição.

4. O Usuário finaliza as alterações e pressiona o botão de retornar.



Cenário alternativo 1

O passo 3 é opcional, por padrão o aplicativo inicia com o nome “Player 1”.

Cenário alternativo 2

No passo 3 o Usuário pode optar por alterar a cor do verso das cartas que será utilizada (Figura 23) que por padrão inicia-se com a cor preta.

Pós-condições

As configurações do aplicativo serão salvas e carregadas nas partidas posteriores.

Quadro 28 – Caso de uso UC02

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

Neste caso de uso detalhado no Quadro 29, o Usuário interage com o menu do jogo (Figura 24) ao pressionar o botão de menu do dispositivo durante a partida.


UC03 – Selecionar as opções do jogo

Descrição

Este caso de uso descreve as opções padrões disponíveis no motor que são acessadas quando o jogador pressiona o botão menu do dispositivo.

Pré-condição

A tela de jogo estar visível e o menu do dispositivo ser pressionado.

Cenário principal

1. O jogador pressiona o botão de regras.

2. A aplicação exibe em nova tela os regulamentos do jogo (Figura 26).

3. O jogador pressiona o botão de retornar ou o botão back.

4. A aplicação retorna para a tela anterior e exibe novamente o menu.



Cenário alternativo 1

No passo 1 o Usuário pode optar por pressionar o botão de pontuação da partida.

1.1. A aplicação exibe nova tela contendo em ordem de pontos o nome dos jogadores participantes e sua pontuação atual (Figura 27).



Cenário alternativo 2

No passo 6 o Usuário pode optar por pressionar o botão de sair da partida.

2.1. A partida se encerra e a aplicação retorna para a tela de seleção de jogos.



Pós-condições

Após a navegação no menu, o Usuário pode por pressionar o botão back ou o botão menu para retornar à partida.

Quadro 29 – Caso de uso UC03

ANEXO D – UC04 - Distribuir as cartas

Este caso de uso é necessário para os jogos onde a distribuição das cartas não é automática sendo esta decisão dependente do desenvolvedor, e descreve a reação do sistema quando a imagem do baralho é pressionada durante o jogo, como pode ser visto no Quadro 30.


UC04 – Distribuir as cartas

Descrição

Este caso de uso descreve as possíveis reações do aplicativo quando o baralho é pressionado. Este caso de uso é opcional dependendo da definição das propriedades do jogo elaborado.

Pré-condição

A tela de jogo estar visível, haver cartas disponíveis no baralho e a imagem do baralho ser pressionado.

Cenário principal

Caso as cartas ainda não foram distribuídas, o aplicativo verifica os jogadores disponíveis e distribui as cartas para todos.

Cenário alternativo 1

Caso não haja mais cartas no baralho, as cartas do “cemitério” são embaralhadas novamente e recolocadas no baralho.

Cenário alternativo 2

Caso as cartas já tenham sido distribuídas, o jogo não será alterado.

Pós-condições

As cartas são distribuídas conforme especificação do jogo.

Quadro 30 – Caso de uso UC04

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

Muitos jogos permitem uma maior ou menor interação do jogador com a partida, este caso de uso detalhado no Quadro 31 descreve como o sistema interage quando o jogador seleciona uma carta e movimenta-a na tela.


UC05 – Mover as cartas da mão

Descrição

Este caso de uso descreve como as cartas do jogador podem ser manipuladas durante a partida.

Pré-condição

O jogo deve permitir cartas na mão do jogador e o jogador selecionar uma das cartas em sua mão.

Cenário principal

1. O aplicativo verifica qual é a carta que deve ser selecionada quando o jogador pressiona a tela.

2. Enquanto o jogador manter a tela pressionada, a carta poderá ser movida por toda a tela. O sistema irá redesenhar a carta acompanhando o movimento de toque do jogador.

3. Quando a tela parar de ser pressionada, o aplicativo verifica a posição onde a carta será solta.

4. Caso a carta for posicionada em uma das áreas pré-definidas para o jogo, a carta será retirada da mão do jogador e inserida no contexto atual.



Cenário alternativo 1

No passo 4, caso o jogador solte a carta fora de uma das áreas pré-definidas, a carta irá retornar para a mão do jogador.

Pós-condições

As cartas são reposicionadas conforme especificação do jogo.

Quadro 31 – Caso de uso UC05

ANEXO F – UC06 - Modificar o valor da aposta

Em vários jogos de cartas o sistema de apostas é utilizado para deixar a partida mais interessante. Este caso de uso (Quadro 32) descreve os passos de como o Usuário interage com as apostas no aplicativo.


UC06 – Modificar o valor da aposta

Descrição

Este caso de uso estará disponível em partidas onde ocorrem apostas entre os jogadores e descreve as opções de apostas possíveis.

Pré-condição

O jogo deve conter mais de um jogador e permitir apostas entre si, e após a distribuição das cartas, o botão de apostas ser pressionado.

Cenário principal

1. A aplicação exibe uma tela com as opções de apostas disponíveis (Figura 25).

2. O jogador escolhe a melhor aposta para a rodada e aguarda a decisão dos outros jogadores.

3. A janela de apostas se fecha e a partida continua.


Cenário alternativo 1

No passo 2, o jogador decide aumentar a aposta. Caso os outros jogadores se mantiverem na rodada e se algum jogador aumentar a aposta, voltar para o passo 1.

1.1 Caso o valor da aposta for aumentado quatro vezes e a rodada de apostas for finalizada, não será mais possível aumentar o valor da aposta e os jogadores poderão optar por continuar na rodada ou desistir da mesma.



Cenário alternativo 2

No passo 2, o jogador opta por desistir da rodada. As cartas do jogador serão retiradas e ele não poderá competir nesta rodada.

Pós-condições

Ao finalizar a rodada do jogo, o jogador com a melhor pontuação das cartas receberá o valor total da aposta. Em caso de empate, o valor será dividido igualmente entre os vencedores.

Quadro 32 – Caso de uso UC06

1 Um motor de jogo é um software ou biblioteca responsável por implementar parcialmente ou integralmente as funcionalidades de um jogo, podendo ser encontrada na forma de ferramentas ou bibliotecas.

2 O baralho padrão francês é o mais utilizado atualmente e é composto por 52 cartas divididas em quatro naipes (espadas, ouros, copas e paus). Em alguns países, foi inserido ao baralho um conjunto de cartas denominadas curingas, ou jokers, que são cartas independentes de valor ou naipe.

3 Thread é um processo ou tarefa concorrente utilizado em sistemas multitarefas que dependente de um criador.

4 JIT é um compilador desenvolvido para a máquina virtual Dalvik, disponível a partir do Android 2.2, que analisa o código da aplicação e o converte para uma forma mais eficiente enquanto o aplicativo está rodando (ANDROID DEVELOPERS, 2010).

5 GNU General Public Licence (GNU GPL), criada em 1989, foi a primeira licença para softwares livres e atualmente a mais utilizada pelos desenvolvedores de softwares de código aberto.

6 c.getImage() busca na classe Card o nome do arquivo a ser utilizado baseando no valor e naipe desta carta.



1   ...   17   18   19   20   21   22   23   24   25


©aneste.org 2017
enviar mensagem

    Página principal