Desenvolvendo Jogos em JAVA!

Desenvolvendo Jogos em JAVA!

(Parte 1 de 3)

Daniel Ricardo dos Santos

Diogo de Campos Mauricio Oliveira Haensch

Desenvolvendo Jogos com Java ME

Daniel Ricardo dos Santos

Diogo de Campos Mauricio Oliveira Haensch

Desenvolvendo Jogos com Java ME PET Computacao

Licenca: Atribuicao-Uso Nao-Comercial-Compartilhamento pela mesma Licenca 2.5 Brasil

• Para cada novo uso ou distribuicao, voce deve deixar claro para outros os termos da licenca desta obra.

• Qualquer uma destas condicoes podem ser renunciadas, desde que Voce obtenha permissao do autor.

• Nada nesta licenca prejudica ou restringe os direitos morais dos autores.

Sumario

1.1 A plataforma Javap. 5
1.2 Java Cardp. 5
1.3 Java Micro Edition (ME)p. 6
1.4 Java Standard Edition (SE)p. 6
1.5 Java Enterprise Edition (E)p. 6

1 Introducao p.5

2.1 O que ep. 7
2.1.1 Aplicac oesp. 7
2.1.2 Vantagensp. 7
2.2 Principais diferencas entre Java SE e Java MEp. 8
2.3 Configurac oes e perfisp. 9
2.4 JCP e JSRsp. 1

2 Java ME p.7

3.1 Sun Wireless Toolkitp. 12
3.2 IDEsp. 12
3.2.1 NetBeansp. 12
3.2.2 Eclipsep. 13

3 Ferramentas de desenvolvimento p.12

5.1 Uso de memoriap. 16
5.2 Resolucaop. 16
5.3 Configurac oes e perfisp. 17

5 Desenvolvendo para Dispositivos Moveis p.16

6.1 A classe MIDLetp. 18
6.2 Commandsp. 19
6.3 Displays e Displayablesp. 20
6.4 Canvasp. 20
6.5 Sprites e Tilesp. 21
6.5.1 Spritesp. 21
6.5.2 TiledLayerp. 2
6.6 Sonsp. 23

6 Desenvolvendo Jogos p.18

7.1 Introducaop. 26
7.2 Estrutura do codigop. 26
7.2.1 Commandsp. 26
7.2.2 Eventos do menu principalp. 29
7.2.3 A classe TelaDoJogop. 30
7.2.4 A classe Bolap. 3
7.2.5 PlayTonep. 35

7 Estudo de Caso - Liga Quatro p.26 8 Bibliografia p.36

1.1 A plataforma Java

Java e uma tecnologia que se estende muito alem da propria linguagem de programacao. Trata-se, na verdade, de uma plataforma de desenvolvimento.

A plataforma Java compreende um conjunto de softwares e especificacoes da Sun Microsystems para o desenvolvimento de aplicativos. A grande vantagem desta plataforma e a sua compatibilidade nao apenas entre sistemas operacionais, mas tambem entre diversas arquiteturas, variando de PDAs e set-top boxes ate servidores. As aplicacoes desenvolvidas nesta plataforma tambem sao diversas, variando de aplicativos embarcados a jogos e aplicativos web.

Devido a essa grande variedade a plataforma e dividida em quatro diferentes ”edicoes”.

Cada edicao e composta de um pacote de softwares que permitem o desenvolvimento e a execucao de programas escritos na linguagem Java.

As plataformas sao desenhadas nao para um processador especıfico, mas para uma Java Virtual Machine (JVM) e um compilador com um conjunto de bibliotecas. A principal vantagem do uso da maquina virtual e aumentar a portabilidade do codigo.

1.2 Java Card

Java Card e a edicao mais limitada da plataforma Java e e destinada a smart cards ou dispositivos similares com pouquıssima memoria. Seu principal foco e a seguranca, com suporte ao encapsulamento de dados no aplicativo, firewall entre aplicativos e criptografia.

Atualmente, encontra-se em desenvolvimento a versao 3 da plataforma.

6 1.3 Java Micro Edition (ME)

Voltada para dispositivos com pouca capacidade de processsamento e memoria limitada, principalmente dispositivos moveis. Muito usada em celulares e PDAs, estende-se tambem para aparelhos como set-top boxes e Blu-ray players. Apresenta algumas dificuldades no desenvolvimento devido a grande variedade de dispositivos e suas especificidades.

A plataforma Java ME e detalhada no proximo capıtulo.

1.4 Java Standard Edition (SE)

E a edicao usada para o desenvolvimento de aplicacoes portaveis de proposito geral. Contem o que necessario para o desenvolvimento de aplicacoes desktop e applets, como pacotes de interface grafica, entrada e saıda, comunicacao com bancos de dados, etc.

Atualmente, encontra-se na versao 6.

1.5 Java Enterprise Edition (E)

Java E e a maior das edicoes de Java, compreendendo tudo o que esta presente na Standard

Edition alem de coisas mais especıficas, como o servidor de aplicacoes GlassFish. Voltada para aplicacoes que rodam no lado do servidor e pensada para tornar as aplicoes robustas, seguras, escalaveis e portaveis. E usada para o desenvolvimento de aplicacoes web e baseadas na arquitetura orientada a servicos (SOA), como web services.

Atualmente, encontra-se na versao 5.

Java ME e uma das edicoes da plataforma Java e, como tal, e composta pela propria linguagem, por uma Maquina Virtual e por uma colecao de APIs.

A linguagem e a mesma usada nas outras edicoes, portanto e familiar para qualquer pessoa que ja tenha programado Java em qualquer plataforma. Para se entender Java ME, entao, e necessario conhecer a Maquina Virtual e a colecao de APIs.

Java ME aceita diferentes implementacoes de maquinas virtuais e normalmente a maquina virtual e definida pela Configuracao.

Alem desses elementos comuns, esta edicao da plataforma Java apresenta alguns elementos especıficos como Profiles e Configuracoes, que serao estudados adiante.

E usado principalmente para o desenvolvimento em sistemas moveis e embarcados, alguns exemplos de sistemas que adotam Java ME sao:

• Celulares; • PDAs;

• Set-top boxes;

• Blu-ray players.

Por ter um campo de aplicacao bem especificado, Java ME apresenta diversas facilidades para os desenvolvedores, tais como:

Portabilidade: Um aplicativo criado utilizando Java ME pode ser portado para diversos aparelhos, desde que sigam as mesmas especificacoes. Isso e muito importante no desenvolvimento para celulares, pois um mesmo aplicativo desenvolvido podera rodar em modelos de diferentes fabricantes.

Boa compatibilidade entre aparelhos: Como ja foi citado acima, desde que sigam as mesmas especificacoes, nao ha grandes problemas de compatibilidade entre os aparelhos que irao rodar um aplicativo.

Constante desenvolvimento: Assim como todo o resto da tecnologia Java, Java ME se encontra em constante desenvolvimento, com novas funcoes e capacidades sendo adicionadas a todo momento. Esse processo de desenvolvimento segue a JCP (Java Community Process), que sera detalhado mais a frente.

Boa documentacao: A plataforma conta com uma vasta documentacao online, no proprio site da Sun, alem de inumeros outros exemplos e tutoriais que podem ser encontrados em sites e foruns.

Desenvolimento integrado: Uma das principais vantagens de Java ME e o desenvolvimento integrado, proporcionado por ferramentas como o Wireless Toolkit (WTK) e IDEs como o NetBeans.

2.2 Principais diferencas entre Java SE e Java ME

As principais diferencas entre Java SE e Java ME sao descritas a seguir:

Maquina Virtual: As maquinas virtuais utilizadas em Java ME sao desenhadas para serem mais compactas e eficientes que a maquina virtual utilizada em Java SE, por isso alguns recursos sao perdidos.

Numeros de ponto flutuante: O suporte a ponto flutuante so foi adicionado na versao 1.1 do

CLDC, por isso ao desenvolver aplicacoes para dispositivos mais antigos e possıvel que o desenvolvedor nao encontre suporte para esta representacao numerica.

Reflexao: O pacote java.lang.reflect so esta presente no CDC. Por isso nao e possıvel utilizar reflexao em dispositivos de menor capacidade.

APIs de alto nıvel (Swing e AWT): Algumas APIs de mais alto nıvel, como as utilizadas para interface grafica nao estao presentes em Java ME.

Acesso ao sistema de arquivos: Para se ter acesso ao sistema de arquivos e necessario utilizar o PDA Profile, ou uma implementacao especıfica de um fabricante.

Grupos de threads: O suporte a grupos de threads, threads que podem ser manipuladas em conjunto, tambem so e provido pelo CDC.

A figura abaixo mostra uma visao geral dos componentes de Java ME e como eles se relacionam as outras tecnologias Java:

As configuracoes (Configurations) e perfis (Profiles) representam as configuracoes e APIs mınimas disponıveis em um dispositivo movel.

Cada aplicativo desenvolvido necessita de uma configuracao mınima para ser rodado, e a garantia de que o dispositivo alvo tera essa configuracao e fornecida pelo sistema de Configurations e Profiles.

As principais Configurations sao o CDC e o CLDC e o principal Profile e o MIDP, que sao explicados a seguir.

O MIDP e a definicao de uma arquitetura, e define varias APIs que devem estar disponıveis em uma plataforma para promover um ambiente de desenvolvimento para as suas MIDlets. A diferenca mais importante entre o MIDP 1.0 e o MIDP 2.0 e a introducao de uma API para jogos, que facilita muito a criacao deste tipo de aplicativo. A maioria dos aplicativos desenvolvidos para dispositivos moveis sao capazes de rodar em plataformas MIDP 1.0, que devem ter as seguintes caracterısticas, entre outras:

• Tamanho da tela mınimo de 96x54pixels. • Input atraves de “One handed keyboard” ou “Two handed keyboard” ou Touch Screen.

• 128Kbytes de memoria para os componentes MIDP.

• 8Kbytes de memoria para dados das aplicacoes.

• 32Kbytes de memoria dinamica.

O MIDP 1.0 e baseado em aparelhos que seguem a configuracao CLDC, ou seja, os aparelhos compatıveis com MIDP tambem o serao com CLDC.

Dispositivos CLDC (Connected Limited Device Configuration) sao os aparelhos mais simples, que possuem uma interface menor e pouca memoria e velocidade de processamento. Devem ter no mınimo as seguintes caracterısticas:

• 128Kb de memoria para rodar a maquina virtual. • 32Kb de memoria dinamica.

• Comunicacao em rede com baixa largura de banda.

• Baixa potencia (para diminuir o gasto de energia).

Dispositivos CDC (Connected Device Configuration) sao aparelhos mais potentes que os CLDC e devem ter pelo menos as seguintes caracterısticas:

• 512Kb de memoria para executar a maquina virtual. • 256Kb de memoria dinamica.

• Capacidade para comunicacao em rede com alta largura de banda.

O Java Community Process (JCP) e um processo formalizado para que varias partes interessadas colaborem no desenvolvimento de especificacoes e futuras versoes da plataforma Java.

Entre os membros da JCP podemos encontrar operadoras de telefonia como a NTT Do-

CoMo, desenvolvedores de dispositivos moveis como a Nokia, a Sony Ericsson e a Motorola, outras empresas e ate mesmo pessoas fısicas.

Os documentos descrevendo as especificacoes e tecnologias propostas sao chamados Java Specification Request (JSR).

Esses documentos sao publicamente revisados ate que um JSR se torne final e seja votado pelo Comite Executivo da JCP.

Um JSR final prove uma implementacao de referencia, na forma de codigo fonte e um Technology Compatibility Kit para verificar a especificacao da API.

O proprio JCP e descrito por um JSR, o JSR 215 de 2006.

Os JSRs sao especialmente importantes em Java ME, por causa do numero de recursos novos e da velocidade com que mudam em dispositivos moveis.

Alguns exemplos de JSRs em Java ME:

• JSR 68: J2ME Platform Specification

• JSR 82: Bluetooth

• JSR 133: Java Game Profile

• JSR 184: Mobile 3D Graphics API for J2ME

12 3 Ferramentas de desenvolvimento

3.1 Sun Wireless Toolkit

O Wireless Toolkit, ou WTK, e uma ferramenta de auxılio ao desenvolvimento de aplicacoes em Java ME (CLDC e MIDP). O WTK possui exemplos, documentacao, funcoes de otimizacao e um emulador para dispositivos moveis.

Ha algumas IDEs (Integrated Development Enviroment, ou ambiente de desenvolvimento) que ja vem com o Sun Wireless ToolKit integrado, outras possuem plugins para integracao e tambem e possıvel usar apenas o WTK para desenvolver suas aplicacoes.

3.2 IDEs

Duas IDEs ja bem conhecidas para desenvolvimento em Java (e tambem em outras linguagens de programacao) sao o Eclipse e o NetBeans. Ambos os ambientes suportam o desenvolvimento em Java ME e serao descritos com um pouco mais de caracterısticas a seguir.

3.2.1 NetBeans

O ambiente de desenvolvimento NetBeans se iniciou como um projeto de dois estudantes, e posteriormente foi comprado pela Sun Microsystems. Por aproximadamente um ano, a empresa manteve o ambiente como software proprietario, mas apos esse perıodo o codigo foi aberto e a partir disso foram surgindo muitas melhoras no ambiente em si e diversos plugins foram criados. Entre esses avancos, surgiu o NetBeans Mobility Pack, que e uma extensao da IDE para desenvolvimento com Java ME.

O NetBeans Mobility Pack ja vem integrado com o emulador da Sun (WTK), alem de suportar outros emuladores. Essa extensao tambem tem algumas ferramentas que auxiliam no desenvolvimento para dispositivos moveis, como algumas classes que podem ser utilizadas nas suas aplicacoes fora as padroes da biblioteca Java ME. Um exemplo disso e a SplashScreen, que estende a classe Canvas do Java ME e pode ser bem util para as aplicacoes desenvolvidas.

O Mobility Pack tambem possui o Game Builder, que auxilia o desenvolvimento de jogos.

Atraves dessa ferramenta, fica mais facil criar Sprites e Tiles para seu jogo, e o Game Builder tambem permite a construcao de cenas (combinacoes de objetos estaticos e dinamicos) de uma maneira mais simples e rapida, ajudando na criacao do seu jogo.

Alem de todas as vantagens do ambiente para o desenvolvimento de aplicacoes com JavaME, e um ambiente gratuito e com boa documentacao, alem de um forte apoio da comunidade.

3.2.2 Eclipse

Existem plugins para a IDE Eclipse para desenvolvimento com Java ME. A grande vantagem de se desenvolver com esse ambiente sao todas as facilidades do Eclipse, que e bem poderoso e versatil para geracao de software em Java.

Um dos plugins existentes para desenvolvimento com JavaME no ambiente Eclipse e o chamado EclipseME. Este plugin e um pouco antigo e so funciona com algumas versoes tambem antigas da IDE. Porem, existem diversos outros plugins que podem ser utilizados para desenvolvimento de aplicacoes para a plataforma ME do Java. Esses plugins podem ser encontrados na propria pagina da IDE Eclipse, na secao de plugins, mas varios deles sao pagos.

14 4 Bibliotecas Java ME

4.1 Java SE x Java ME

O Java Micro Edition possui apenas um subconjunto dos componentes da Standard Edition, com uma maquina virtual e algumas APIs mais limitadas. As APIs presentes no Java ME sao definidas no JCP (Java Community Process). A limitacao de memoria dos dispositivos que rodam Java ME acabou resultando na retirada de algumas das bibliotecas presentes no Java Standard Edition, para manter a plataforma pequena e adequada ao seu objetivo. Porem, o Java Micro Edition nao possui apenas uma especificacao. Dependendo da configuracao e perfil escolhidos, voce pode utilizar diferentes APIs para desenvolver sua aplicacao. Com a evolucao do poder de processamento e capacidade de memoria dos dispositivos, surgem novas funcionalidades mais complexas atraves dos JSRs. Como exemplo disso, podemos citar a ausencia de variaveis do tipo ponto flutuante (como o double) em versoes mais antigas de configuracoes e perfis do Java ME. Devido a essa diferenca entre as duas edicoes, nem toda aplicacao desenvolvida em Java SE funcionara num dispositivo que roda Java ME.

4.2 Bibliotecas disponıveis

Como dito anteriormente, as APIs disponıveis para desenvolver a sua aplicacao resultam da combinacao de configuracao e perfil adotados pelo programador. Utilizando como exemplo a versao 1.1 do CLDC (Connected Limited Device Configuration), os pacotes presentes para o desenvolvimento da sua aplicacao sao:

• java.io • java.lang

• java.lang.ref

• java.util

Outra diferenca de bibliotecas entre a Standard Edition e a Micro Edition e em relacao a interface das aplicacoes. O SWT e Swing da edicao padrao de Java nao se encontram na versao ME. A Micro Edition conta com um novo pacote para este fim, chamado java.microedition.lcdui, que pode ser encontrado em qualquer versao do MIDP. A versao 2.0 do MIDP contem os seguintes pacotes:

• java.io • java.lang

• java.util

• javax.microedition.io

• javax.microedition.lcdui

• javax.microedition.lcdui.game

• javax.microedition.media

• javax.microedition.media.control

• javax.microedition.midlet

• javax.microedition.pki

• javax.microedition.rms

Como podemos notar, existe uma serie de pacotes exclusivos do JavaME (os iniciados com javax.microedition). Assim, com a presenca de alguns pacotes exclusivos, tambem pode-se afirmar que nem toda aplicacao escrita em Java ME funcionara na plataforma Java SE.

(Parte 1 de 3)

Comentários