Artigo WebMobile 20 - Escrevendo Jogos para Celular em JavaME

Veremos o desenvolvimento de um jogo completo para dispositivos móveis utilizando a tecnologia JavaME, passando por toda sua construção.

Esse artigo faz parte da revista WebMobile edição 20. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler este artigo em PDF

Java Mobile

Escrevendo Jogos para Celular em JavaME

 

De que se trata o artigo:

Trata do desenvolvimento de um jogo completo para dispositivos móveis utilizando a tecnologia JavaME, passando por toda sua construção.

 

Para que serve:

Serve como referência para o desenvolvimento de jogos nesta plataforma de desenvolvimento, pois descreve todos os elementos que devem fazer parte de tal aplicação e mostra como construí-lo, e ainda pode ser útil para o desenvolvimento de outros tipos de aplicações nesta tecnologia que não sejam jogos.

 

Em que situação o tema é útil:

O desenvolvimento e utilização de jogos é sempre um tema interessante para desenvolvedores e usuário. E uma das principais utilizações de JavaME é a programação de jogos. Esta é a tecnologia Java para o desenvolvimento de aplicações para dispositivos móveis, então qualquer desenvolvedor que deseje se aventurar neste ramo precisa ter conhecimento desta tecnologia, e este artigo pode ser usado como referência para isso.

 

Uma das principais utilizações de JavaME é a programação de jogos. Neste artigo, isso será abordado através de um jogo standalone que iremos desenvolver. Esta aplicação é um simples jogo de basquete no qual o jogador joga contra um oponente controlado pelo computador. Cada jogo dura exatamente dois minutos. O objetivo do jogo é arremessar tantas bolas você puder e evitar que o oponente faça o mesmo.

 

Principais Funções

Um jogo típico no ambiente JavaME pode ser formado pelos seguintes itens:

·  Uma tela de boas vindas que redireciona automaticamente ao menu principal;

·  O menu principal;

·  A tela principal. Essa é onde o jogo é realmente executado;

·  Menu de níveis (configuração da dificuldade do jogo, etc.);

·  Tela de instrução;

·  Tela “Sobre”.

 

A tela principal e a tela de boas vindas são executadas a partir de classes que são estendidas da classe Canvas. Esta classe é definida como sendo uma API de baixo nível, o que significa que ela permite controle total do display do celular no nível de pixels. Todas as outras telas são executadas a partir de classes de API de alto nível que usam controles padrões do JavaME.

Quando programamos aplicações para JavaME, devemos também considerar como lidar com eventos únicos do sistema, tais como interrupções de chamadas. Quando tratamos este tipo de evento, podemos querer congelar o estado atual do jogo ou então ser capaz de salvar o estado deste jogo após sairmos da aplicação.

Para iniciarmos, precisamos baixar o JavaME wireless toolkit. Este é o mais elementar SDK para este ambiente de programação. O principal objetivo deste toolkit é compilar os arquivos fontes em Java e produzir dois arquivos de deployment (implantação): um arquivo JAR que encapsula todos os arquivos de classes e um arquivo JAD (Java Application Descriptor). O arquivo JAD provê dados sobre a aplicação, tais como autor, tamanho do arquivo JAR, número da versão, etc. Este SDK pode ser integrado com as mais avançadas IDE’s, tais como Eclipse ou NetBeans. Mais informações sobre o Sun Java Wireless Toolkit na Nota DevMan 1.

 

Estrutura do Jogo

A Figura 1 apresenta a estrutura geral do jogo.

 

Figura 1. Estrutura geral do jogo

 

O jogo inicia com uma tela de abertura, e depois de 5 segundos redireciona para a tela de menu. Na tela de meu o jogador tem a opção de iniciar o jogo, configurar o nível de dificuldade, exibir uma tela "Sobre" ou exibir as instruções de uso do jogo. Cada tela é gerenciada por sua própria classe. Por exemplo, a tela de boas vindas é gerenciada pela classe Splash, a tela principal do jogo é gerenciada pela classe MainScreen, e assim por diante. O código fonte e os executáveis deste jogo estão disponíveis no Portal da WebMobile.

 

A Classe Midlet

Uma classe muito importante que não é exibida no diagrama da Figura 1 é a classe TestMidletMIDlet. Esta classe estende da classe Midlet, e sua função é inicializar tudo das outras classes e controles. O método principal da classe Midlet é o método startApp(). Normalmente, quando um midlet é chamado, ele está inicialmente no estado de pause. Se tudo executa normalmente e nenhuma exceção ocorre, então o midlet entra para o estado ativo. Isso é feito através da chamada ao método startApp(). Na Listagem 1 é apresentado um exemplo deste método.

 

Listagem 1. Exemplo de método startApp()

 

public void startApp() {

// some code here...

display.setCurrent(splash);

}

Nesta listagem, a chamada mais importante é display.setCurrent(splash). Esta chamada de método determina qual de nossas telas será exibida no dispositivo móvel. Neste exemplo, ele irá exibir a tela Splash, como visto na Figura 2.

 

 

Figura 2. Tela Splash

 

A Tela Splash

A tela splash é a primeira tela que aparece quando a aplicação é iniciada. Ela é estendida da classe Canvas. A classe Canvas, assim como as chamadas API de baixo nível, permite controle total do display no nível de pixels. Para pintar algo, precisamos sobrepor o método paint(). Veja um exemplo na Listagem 2.

 

Listagem 2. Exemplo de método paint()

 

public void paint(Graphics g) {

// sets background color

g.setColor(255, 255, 255);

// fill the screen with the color defined previously

g.fillRect(0, 0, this.getWidth(),this.getHeight());

// draw some image

" [...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados