J2ME - Games

Embed Size (px)

Citation preview

Antonio Rodrigo Cranchi Bassan 0200384 8 Semestre

DESENVOLVIMENTO DE JOGO PARA TELEFONE CELULAR USANDO A PLATAFORMA J2ME/MIDP

Jaguarina 20051

Antonio Rodrigo Cranchi Bassan 0200384 8 Semestre

DESENVOLVIMENTO DE JOGO PARA TELEFONE CELULAR USANDO A PLATAFORMA J2ME/MIDP

Monografia apresentada disciplina Trabalho de Graduao III, ao curso de Cincia da Computao da Faculdade de Jaguarina, sob orientao do Prof. Ms. Peter Jandl Jr., como requisito parcial para a concluso de graduao.

Jaguarina 2005

2

BASSAN, Antonio Rodrigo Cranchi. Desenvolvimento de Jogo para Telefone CelularUsando a Plataforma J2ME/MIDP Monografia defendida e aprovada na FAJ em 12 de dezembro de 2005 pela banca examinadora constituda pelos professores:

Prof. Ms. Peter Jandl Jr FAJ orientador

Prof. Roberto Vargas Pacheco FAJ

Prof. Jos Arnaldo Geraldi Nunes FAJ 3

AGRADECIMENTOS

A realizao desta Monografia s foi possvel pelo concurso de inmeras pessoas. A todos manifesto minha gratido. E de modo particular: Ao Prof. Ms. Peter Jandl Jr pela orientao dedicada e pelo constante estimulo em todas as fazes de realizao deste trabalho. Ao Prof. Paulo Tramacoldi que me ajudou no anteprojeto. Aos amigos Juliano, Mauro Lopes e Clovis pelo apoio, discusses criticas e e-mails respondidos que, em muito, enriqueceram a realizao desta pesquisa.

4

BASSAN, Antonio Rodrigo Cranchi.

Desenvolvimento de jogo para telefone celular Trabalho de Concluso de Curso (Bacharelado

usando a plataforma J2ME/MIDP. 2005. Jaguarina.

em Cincia da Computao) Curso de Cincia da Computao da Faculdade de Jaguarina,

RESUMOA plataforma Java 2 Micro Edition (J2ME) disponibiliza a linguagem Java para vrios dispositivos tais como telefones celulares, PDAs, Internet screenphones, settop boxes digitais para TV, sistemas de navegao automotiva, comutadores e roteadores de rede. A plataforma J2ME consiste de mquinas virtuais (KVM) e APIs especificadas em "documentos de configurao" ("Configuration" CDC e CLDC) em conjunto com perfis ("Profiles" - MIDP) para uma determinada aplicao ou mercado. Tudo est disposto em camadas de software. Segundo programadores de jogos para telefone celular depois do lanamento do MIDP 2.0 (perfil de dispositivo de informao mvel) e junto com ele a Game API que veio com um pacote de 5 classes javax.microedition GameCanvas, Layer, Sprite, TiledLayer, LayerManager possibilitaram jogos em 2D, simplicidade para o desenvolvimento, reduo do tamanho da aplicao e uma padronizao, as operadoras preferem Java porque no precisam pagar taxas para utiliz-lo. Para podermos visualizar melhor todos estes benefcios iremos apresentar um estudo de caso de um jogo intitulado como Disputa de Pnaltis.Como o nome sugere um jogo baseado em cobranas de pnaltis, onde o jogador o cobrador e tem que marcar gols na meta adversria. Constatou-se que podemos criar jogos para celulares em desktop com uma tecnologia de ponta no mercado, sem nenhum gasto. Diante deste resultado, o presente trabalho mostra que J2ME uma ferramenta adequada para se produzir software com um baixo custo de desenvolvimento e de grande interesse para as empresas envolvidas neste mercado.

5

SUMRIO

1. 2. 3. 4. 4.1

INTRODUO..........................................................................................................9 MERCADO DE JOGOS PARA CELULARES.........................................................10 DIVISO DO JAVA..................................................................................................11 O J2ME......................................................................................................................12 Configuraes............................................................................................................13

4.1.1 CLDC.........................................................................................................................14 4.1.2 Maquina Vitual K.....................................................................................................15 4.2 Perfis.........................................................................................................................15

4.3 Arquitetura Genrica...................................................................................................16 4.4 5. 5.1 5.2 6. 6.1 6.2 MIDP........................................................................................................................16 GAME API ...............................................................................................................19 Justificativa para usar a Game API...........................................................................19 Elementos da GAME API ........................................................................................19 JOGO Disputa de Pnaltis ....................................................................................22 Descrio funcional do jogo......................................................................................22 Projeto do jogo......................................................................................................... 22

6.2.1 Diagrama de Caso de Uso.........................................................................................23 6.2.2 Diagrama de Classes.................................................................................................24 7. 8. 9. IMPLEMENTAO................................................................................................26 CONCLUSO............................................................................................................28 REFERENCIAS BIBLIOGRFICA..........................................................................29 6

Lista de SiglasAPI CDC CESAR CLDC CORBA ELSPA EJBs GSM GUIs IDEs JAD JAR JDK JVM J2EE J2ME J2SE KVM MIDP OEM OOP Application Program Interface Connected Device Configuration Centro de Estudos e Sistemas Avanados do Recife Connected Limited Device Configuration Common Object Request Broker Architecture Associao Europia dos Produtores de Software e Entretenimento Enterprise JavaBeans Global Standard Mobile Graphical User Interface Integrated Development Environment Java Archive Descriptor Java Archive Java Development Kit Java Virtual Machine Java 2 Enterprise Edition Java 2 Micro Edition Java 2 Standard Edition Kilobyte Virtual Machine Mobile Information Device Profile Original Equipment Manufacturer Object Oriented Programming 7

PDAs SO XML WTK -

Personal Digital Assistents Sistema Operacional Extensible Markup Language Wireless Toolkit

8

1. INTRODUOEste trabalho tem como meta o desenvolvimento de um jogo para celular utilizando a plataforma J2ME/MIDP (Java 2 Micro Edition/ Mobile Information Device Profile) com conceitos bsicos de programao Java/MIDP. A configurao CLDC (Connected Limited Device Configuration) contem uma API (Application Program Interface) mnima para poder rodar aplicativos em dispositivos mveis com limites de processamento e memria, tais como, telefones celulares, smartphones, pagers e PDAs (Personal Digital Assistents). Em oposio tem-se outra configurao a CDC (Connected Device Configuration) que supe dispositivos com mais capacidade tais como settop boxes digitais, screen-phones, Nokia Communicator e alguns PDAs mais poderosos (Corbera, 2005). Neste trabalho vamos falar mais sobre a configurao CLDC que utilizada por celulares. No topo da camada de CLDC existe a camada de software chamada Profile. O profile, ou perfil especifica um conjunto de APIs que se moldam a um determinado tipo de dispositivo. A diferena entre configurao e perfil que a configurao descreve de forma geral uma famlia de dispositivos, enquanto o perfil fica mais especfico para um tipo particular de aparelho em uma dada famlia. O perfil to somente acrescenta funcionalidades quele particular aparelho. O perfil MIDP contm APIs para aparelhos celulares, enquanto o CLDC aborda APIs para dispositivos mveis de pouca capacidade de processamento, dentre os quais celulares, pagers etc. O CLDC define em sua API os pacotes java.io, java.lang, java.util e javax.microedition.io (conexo e interfaces). No h suporte a ponto flutuante. O MIDP define tudo o que h no CLDC com a adio aos pacotes javax.microedition.lcdui (interface com o usurio), javax.microedition.rms (sistema de gerncia de registros para persistncia de informaes), javax.microedition.midlet (suporte para aplicaes MIDP, os chamados midlets). Depois do MIDP 2.0 e junto com ele a Game API que veio com um pacote de 5 classes javax.microedition os jogos para telefone celular tornaram um atrativo grande para as industrias deste software.Para entender-se melhor o funcionamento J2ME/MIDP foi estudado e avaliado os benefcios da utilizao da plataforma. Mostra-se o projeto de um jogo para celular, e avalia-se seu resultado obtido. E qual seria o interesse do mercado em relao aos jogos criados para celulares utilizando a plataforma J2ME/MIDP.

9

2. MERCADO DE JOGOS PARA CELULARESNo Brasil, os padres de linguagem de programao so Java, Brew e Mophun que brigam pela preferncia das empresas de telefonia mvel. Depois que a Vivo lanou seus primeiros jogos em Brew para downloads, em maro de 2003, TIM e Oi apressaram-se para oferecer servios semelhantes para jogos em Java. A fabricante de celulares Motorola j possui centros de pesquisas e alguns projetos com universidades brasileiras para desenvolvimentos de aplicativos utilizando Java/MIDP, tais como o CESAR (Centro de Estudos e Sistemas Avanados do Recife) (Andrade, 2004). Em 2003, o mercado de downloads de games para celulares e de realizao de partidas on-line, usando a rede das operadoras de telefonia mvel, rendeu cerca de US$ 250 milhes de receita ao redor do mundo, de acordo com estudo do ARC Group, da Inglaterra. Segundo ELSPA (Associao Europia dos Produtores de Software e Entretenimento) o mercado de jogos movimentou US$ 28 bilhes no mundo mais que a indstria cinematogrfica. Desse total, um bilho refere-se a jogos para celulares. Trata-se de um valor pequeno porque um mercado incipiente, mas as perspectivas so de crescimento forte e estima-se que em 2007 esse servio movimentar cerca de US$ 3,5 bilhes (Paiva, 2004). No final de 2004 tnhamos 151,8 milhes de aparelhos celulares com Java no mundo. O Java o mais usado por operadoras GSM (Global Standard Mobile), principalmente por ser aberto, o que significa que desenvolvedores de jogos no precisam pagar taxa para utiliz-lo. A Qualcomm cobra pela licena e testes dos softwares desenvolvidos em Brew. O uso desse padro requer um planejamento financeiro mais detalhado, para no correr o risco de ter prejuzo no futuro. O padro Mophun, desenvolvido pela sueca Synergenix, corre por fora na disputa pelo reinado entre jogos de celulares, os jogos nesta linguagem tm, em mdia, entre metade e um tero do tamanho, respectivamente, daqueles programados em Java e Brew, mas para utilizar voc teria que pagar licena tambm (Paiva, 2004).

10

3. DIVISO DO JAVAJava uma linguagem orientada a objetos, com exceo de seus tipos primitivos de dados, tudo em Java so classes ou instncias de uma classe. Atende a todos os requisitos necessrios para uma linguagem ser considerada orientada a objetos, que, resumidamente, so: oferecer mecanismos de abstrao, encapsulamento e hereditariedade (Jandl, 2002). Atualmente a plataforma Java est dividida em trs segmentos (Fig. 1) que possuem um direcionamento diferente para cada tipo de aplicao. Isso permite uma maior adequao das necessidades do desenvolvedor, alm da atualizao de cada edio de maneira independente das demais. Os trs segmentos so descritos abaixo: J2EE (Java 2 Enterprise Edition): Segmento que d nfase ao desenvolvimento corporativo voltado para servidores, utilizando de tecnologias relacionadas, tais como: Enterprise JavaBeans (EJBs), Servlets e JavaServer Pages, CORBA (Common Object Request Broker Architecture) e XML (Extensible Markup Language). J2SE (Java 2 Standard Edition): Segmento padro da linguagem. Possui um conjunto de classes e ferramentas que mais adequado ao desenvolvimento de aplicaes voltadas para computadores pessoais ou estaes de trabalho (Fig. 1). J2ME (Java 2 Micro Edition): um subconjunto do J2SE, com algumas classes especficas para a plataforma (Javapoti, 2005).

Fig. 1 Plataforma Java 2. 11

4. O J2MEEm nosso trabalho abordaremos o Java 2 Micro Edition que a Sun criou para permitir o desenvolvimento de aplicativos Java para dispositivos que no tem o mesmo poder de processamento, memria e classes encontrados em uma plataforma desktop tpica. Os produtos podem incluir telefones celulares, PDAs, pagers, sistemas de entretenimento e navegao automotiva, para citar apenas alguns (Muchow, 2004). Muitos desses no tm opo de downloads e software de instalao, alem daquele que foi configurado durante o processo de fabricao. Embora fosse timo ter a API J2SE em um dispositivo micro, isso no realstico. Por exemplo, um celular, com sua tela limitada, no pode fornecer toda a funcionalidade disponvel do Abstract Window Toolkit, a primeira interface grfica com o usurio lanada com Java. A Micro Edition foi introduzida para tratar das necessidades especiais dos dispositivos para o consumidor que esto fora da abrangncia do J2SE e do J2EE (Fig. 2). Os recursos dos dispositivos dentro da Micro Edition podem variar bastante. Um Internet Screenphone (dispositivo de hardware projetado para dar acesso a e-mails, notcias, bancos on-line etc.) pode ter uma tela muito maior do que um celular. Entretanto, mesmo dispositivos que parecem semelhantes em tamanho podem variar muito em seus recursos. Um telefone celular ou PDA tem um tamanho fsico limitado, apesar de um telefone celular poder ter uma tela com resoluo total de 12.288 pixels (96 x 128), enquanto a resoluo de um PDA pode comear em 20.000 pixels e da pra cima. Uma nica plataforma Java definitivamente no acomodara tudo isso. Com a introduo do J2ME, os dispositivos micros no precisam mais ter natureza esttica. Exatamente como um navegador Web fazendo downloads de applets Java, uma implementao de J2ME em um dispositivo permite a opo de navegar, fazer downloads e instalar aplicativos Java e contedo.

Fig. 2 A Arquitetura J2ME. 12

4.1 ConfiguraesTrecho do FAQ do J2ME as configuraes e os perfis so definidos pelos grupos de trabalho do setor do cdigo-fonte aberto utilizando o Java Community Process Program da Sun (Sun, 2005 C). Dessa maneira, as empresas podem decidir por si mesmas sobre quais elementos so necessrios para fornecer uma soluo completa, destinada ao setor (JCP, 2005). Para suportar uma ampla variedade de produtos que se encaixam dentro do escopo J2ME, a Sun introduziu a Configurao (Fig. 2). Uma configurao define uma plataforma Java para uma ampla variedade de dispositivos. Ela est intimamente vinculada a uma mquina virtual Java (JVM, Java Virtual Machine). Na verdade, uma configurao define os recursos da linguagem Java e as bibliotecas Java bsica da JVM (Fig. 2) para essa configurao em particular. A linha divisria de aplicao de uma configurao , de modo geral, baseado na memria, no vdeo e na conectividade de rede (ou limitaes disso) e no poder de processamento disponvel em um dispositivo. A FAQ sobre J2ME da Sun diz o seguinte: A tecnologia J2ME tem dois centros de projeto os objetos que voc segura em suas mos e os objetos que voc conecta em uma parede. Essa pode ser uma boa definio geral, mas apenas isso, geral. Mais isto no o nico guia na deciso sobre em qual configurao se aplica (Muchow, 2004). A seguir esto as caractersticas tpicas dos dispositivos dentro das duas configuraes correntemente definidas: Configurao de Dispositivos Conectado (CDC) 512 Kb disponvel de ROM (mnimo); 256 Kb disponvel de RAM (mnimo); Conectividade de rede, largura de banda possivelmente persistente e alta; Dispositivos que suportam o CDC: TV set-top boxes, sistemas de navegao automobilstica, PDAs como mais recursos de hardware, etc. Configurao de Dispositivos Conectado Limitado (CLDC), com exceo da memria disponvel, a CLDC no tem requisitos de hardware especficos. Os requisitos mnimos de memria so os seguintes: No mnimo 128 Kb de memria disponvel para a Plataforma Java; 13

32 kilobytes para alocao de memria em tempo de execuo; Fornecimento de energia limitado (geralmente fornecido por baterias); Interface restrita com o usurio; Conectividade de rede, normalmente dispositivos sem fio com largura de banda baixa e acesso intermitente. Exemplos de dispositivos que suportam o CLDC (Fig. 1): telefones celulares, smartphones, PDAs com poucos recursos de hardware, pagers, etc. Embora essa diviso parea bastante clara, nem sempre esse o caso. A tecnologia est

continuamente avanada. A questo , medida que a tecnologia nos oferecer mais poder de processamento, com mais memria e recursos de tela, a sobreposio entre essa categorias se tornar maior (Muchow, 2004). 4.1.1 CLDC Em nosso trabalho daremos nfase para esta configurao, pois ela a configurao utilizada em celulares (Fig. 1). O objetivo da CLDC duplo. O primeiro definir uma especificao para uma JVM, e o segundo definir um conjunto de classes (bibliotecas) Java. Cada objetivo tem um tema em comum: suportar uma ampla variedade de dispositivos com memria, capacidade de vdeo e recursos limitados. Embora seja um tanto contra a natureza o motivo pelo qual a linguagem Java uma plataforma to poderosa em um dispositivo mvel, no existe nenhum requisito de que um fabricante suporte downloads dinmico de aplicativos e/ou dados. Se esse for o caso (isto , os programas J2ME disponveis no dispositivo sero instalados durante o processo de fabricao), ento a quantidade de memria exigida pode ser significativamente menor (Muchow, 2004). A CLDC tem um conjunto de requisitos mnimo de software. O sistema operacional hospedeiro deve ser capaz de executar a JVM e gerenciar aplicativos Java no dispositivo, incluindo seleo e ativao de aplicativos e a capacidade de remover aplicativos Java do dispositivo. A implementao desses recursos no est especificada na CLDC e, assim, dependente do dispositivo e deixada para o fabricante.

14

4.1.2 Maquina Virtual K A implementao da Sun de uma JVM que atende especificao da CLDC. A KVM (Kilobyte Virtual Machine) foi projetada para ser a menor e a mais eficiente possvel, e ainda permanecer rpida para as necessidades da linguagem Java. Com a memria sendo normalmente um recurso precioso em dispositivos pequenos de recursos restritos, a base de tempo de execuo apenas 60 kilobytes (aproximadamente). O que explica a origem do K no nome KVM (Fig. 2), pois a mquina virtual executar em apenas alguns dezenas de kilobytes de memria. A implementao de referencia da Sun da KVM escrita em C para facilitar a portabilidade. A maior parte do cdigo que compreende a KVM no mudar, independentemente da plataforma. O cdigo dependente de dispositivos limitado ao gerenciamento de memria, tratamento de erros fatais, processamento de eventos, inicializao e limpeza de cdigo. 4.2 Perfis Os Perfis (Fig. 2) so um conjunto de APIs mais especializadas, com a finalidade de atender s caractersticas especficas de cada dispositivo. E so estas APIs as que realmente interessam ao programador. Alguns perfis existentes so: MIDP (para telefones celulares, PDAs, etc.), Personal Profile, RMI Profile, etc. MIDP (Fig. 2) o perfil mais utilizado em telefones celulares e PDAs. Atualmente existem trs verses: MIDP 1.0, MIDP 2.0 e a mais atualizada at o momento o MIDP 2.2. A verso 2.0 e 2.2 suporta aplicaes desenvolvidas para o MIDP 1.0. Define o ciclo de vida de uma aplicao (MIDlet), similar ao de uma Applet. Define APIs para GUIs (Graphical User Interface), manipulaes de eventos, armazenamento de dados no dispositivo, conectividade, etc (Moreira, 2005). Em 2003 com a criao da MIDP 2.0 varias funcionalidades teis para o desenvolvimento de jogos foram acrescentados, como, por exemplo, o suporte transferncia de pixels.Um destaque foi incluso da Game API, que serve como fundao para a criao de jogos, permitindo um melhor uso das capacidades grficas nativas do aparelho e trazendo assim maior desempenho.

15

4.3 Arquitetura Genrica Comea no SO (sistema operacional) hospedeiro, seguido da (VM) mquina virtual que assumir duas formas. Para sistemas compatveis com a CDC, ela ser a mquina virtual tradicional; isto , o mesmo conjunto de recursos do Java 2 Standard Edition. Para sistemas compatveis com a CLDC, ela ser a KVM ou uma mquina virtual que atenda s especificaes exigidas pela CLDC. As bibliotecas bsicas CLDC ou CDC so as prximas na hierarquia. Os perfis so a camada superior, e so projetadas para fornecer um kit de ferramentas para escrever aplicativos para uma famlia de dispositivos em particular (Fig. 3).

Perfil Configurao Mquina Virtual Java Sistema Operacional Hospedeiro Fig. 3 - Arquitetura genrica do J2ME. 4.4 MIDP A implementao de referncia do MIDP verso 2.0 baseada no seguinte pedido de especificao Java. Os recursos considerados no MIDP 2.0 podem incluir suporte HTTPS, soquetes e datagramas, extenses para a interface de baixo nvel e um analisador XML (Muchow, 2004). O sistema operacional hospedeiro a base. A mquina virtual ser a KVM. KVM a implementao da Sun de uma JVM que atende s especificaes da CLDC ela pode no ser a nica implementao de mquina virtual disponvel para MIDP. As bibliotecas de base CLDC vm a seguir, seguidas do perfil MID (Fig. 4).

Perfil MID Bibliotecas Bsicas CLDC Mquina Virtual K (KVM) Sistema Operacional Hospedeiro Fig. 4 - Arquitetura do perfil MID. 16

Os requisitos de hardware e software especificam que a tela deve suportar pelo menos 96x54 pixels. Deve haver pelo menos um tipo de entrada de usurio disponvel: teclado de uma mo(teclado de telefone), teclado de duas mos (teclado QWERTY normal) ou uma tela de toque 128 kilobytes de memria no voltil (ROM) para executar os componentes MID (Mobile Information Device). Pelo menos 8 kilobytes de memria no-voltil (ROM) para os aplicativos armazenarem dados persistentes, como configuraes e dados do aplicativo. 32 kilobytes de memria voltil (RAM) para executar o Java. Conectividade de rede sem fio. O sistema operacional em execuo no dispositivo deve fornecer agendamento mnimo, tratamento de excees e processamento de interrupes. Tambm deve haver recursos suficientes para executar uma JVM. O software deve suportar escrita de elementos grficos bitmap na tela. Usando qualquer um dos trs tipos de entrada descritos anteriormente, o software deve aceitar entrada e passar as informaes para a JVM. Para suporte de dados persistentes, devem existir recursos para ler e gravar em memria no-volatil. Lembre-se de que no existe nenhum requisito definido para um sistema de arquivo. Quaisquer dados de aplicativo que precisem persistir quando o dispositivo for desligado precisaro ser gravados na memria. Deve haver acesso para os recursos de interligao em rede no dispositivo (especificamente, a capacidade de ler e gravar informaes atravs de uma rede sem fio). O sistema operacional nativo executando em um dispositivo mvel pode variar, assim como os prprios dispositivos. Portanto, importante estabelecer requisitos de software mnimos, deixando a porta aberta para uma ampla variedade de dispositivos que possam implementar o perfil MID. Para retratar visualmente a arquitetura de um MID, comearemos com o hardware. Um nvel acima, executando no hardware, est o sistema operacional nativo. No canto superior direito, teremos nossa primeira referencia a um aplicativo executando em um MID, o aplicativo nativo. At a introduo do J2ME, esses aplicativos eram os nicos tipos de programas disponveis em um dispositivo mvel. Um exemplo de programa nativo seria o programa de configurao que vem instalado no dispositivo, permitindo que voc configure o tipo de toque, o volume, a data e a hora etc. A CLDC instalada no sistema operacional nativo e base do MIDP. Os aplicativos MIDP tem acesso s bibliotecas CLDC e MIDP. As classes especificas de OEM (Original Equipment Manufacturer, fabricante de equipamento original) so fornecidas pelo fabricante do dispositivo. A funcionalidade adicionada pode incluir opes

17

como a capacidade de responder s chamadas recebidas ou de pesquisar entradas em uma agenda telefnica. O inconveniente que essas classes so especificas para o dispositivo e, como resultado, voc joga a portabilidade pela janela. Os aplicativos especficos do OEM podem acessar APIs MIDP e classes especficas do OEM. Se essas ltimas forem usadas, mais uma vez, os aplicativos podem no ser portveis para outros dispositivos. Uma MIDlet um aplicativo Java projetado para ser executado em um dispositivo mvel. Mais especificamente, uma MIDlet tem como classes Java bsicas a CLDC e o MIDP. Um conjunto de MIDlets consiste em uma ou mais MIDlets empacotadas, usando um arquivo JAR (Java Archive). Dentro de um conjunto, as MIDlets podem compartilhar recursos. Como um exemplo, pode ser interessante para as MIDlets ter acesso a uma rea comum no armazenamento persistente. Uma idia compartilhar as preferncias do aplicativo configuradas pelo usurio. Quando o usurio muda de uma MIDlet para outra, essas preferncias so carregadas junto com ele, proporcionando uma aparncia e um comportamento consistentes. A distribuio de um aplicativo para produo geralmente consistir em muitos arquivos. Alm das classes Java, outros arquivos, como imagens e dados de aplicativo, conhecidos como recursos, so bastantes comuns. Voc empacota todas essas informaes em uma nica entidade conhecida como arquivo JAR. Alm dos arquivos de classes e recurso, um JAR contm um arquivo conhecido como manifesto. Esse arquivo descreve o contedo do JAR. O arquivo do manifesto tem o nome manifest.mf e armazenado como parte do prprio arquivo JAR (Sun, 2005 D). Alm de um arquivo JAR, um arquivo JAD (Java Archive Descriptor) deve estar disponvel como parte do conjunto de MIDlets para fornecer informaes sobre a(s) MIDlet(s) dentro do arquivo JAR. O raciocnio por trs da incluso de um arquivo JAD o seguinte: Fornecer informaes para o gerenciador de aplicativos sobre o contedo de um arquivo JAR. Com essas informaes, podem ser tomadas decises quanto a uma (ou mais) MIDlet(s) ser(am) conveniente(s) para executar no dispositivo. Fornecer um meio para que os parmetros sejam passados para uma (ou mais) MIDlet(s), sem ter de fazer alteraes no arquivo JAR. O gerenciador de aplicativos exige que o arquivo JAD tenha a extenso .jad (Muchow, 2004). 18

5. GAME APIA GAME API veio para revolucionar o mercado de jogos para celulares desenvolvida para turbinar jogos em Java. As cinco classes do pacote javax.microedition, Icdui.game (Fig. 5) estendem as capacidades do MIDP para jogos 2D de diversas formas significativas. Um dos conceitos principais da Game API permitir que o contedo da tela seja composto por layers (imagem de fundo, detalhes do cenrio, personagens etc). 5.1 Justificativa para usar a GAME API As cinco classes do pacote javax.microedition favorecem o programador a

desenvolver jogos mais complexos com menos clculos matemticos e linhas de comando. Atualmente temos jogos para celulares com resolues fantstica com a criao da GAME API (Sabino, 2005). Algumas das vantagens so: Simplifica o desenvolvimento Reduz o tamanho da aplicao Aumenta a performance Padronizao

5.2 Elementos da GAME API Representado por objeto Layer. Uma layer pode ser qualquer elemento grfico, e tem como caractersticas posio, tamanho e visibilidade. As duas subclasses concretas de Layer so Sprite e TiledLayer. Sprite utilizada para compor uma animao a partir de vrios quadros, oferecendo tambm mtodos para movimentao e giro, alem de deteco de colises. A classe TiledLayer possibilita a criao de uma imagem grande atravs da composio de partes menores, o que bastante til para a construo de cenrios ou fundos (backgrounds), a imagem original quebrada em partes, que so indexadas e usadas para montar o cenrio do jogo, o ndice de cada parte especificada em uma array de mapeamento esta classe tambm inclui mtodos para realizar a animao de clulas, o que permite montar cenrios animados. A classe LayerManager controla o desenho de um grupo de layers e facilita a renderizao de 19

objetos Sprite e TiledLayer. Com ela, em vez do programador chamar o mtodo paint() de cada objeto individualmente, ele simplesmente os adiciona ao LayerManager e depois chama o mtodo paint() desta classe, que fica responsvel por desenhar as regies corretas de cada layer na ordem determinada. A ordem em que as layers so renderizadas influencia como so mostradas, pois seu ndice esta relacionado z-order, ou seja, as layers de ndice mais baixo ficam mais perto do usurio, aparecendo na frente daquelas de ndice mais alto. Esto disponveis dois mtodos para a insero de layers: append, que recebe como parmetros apenas o objeto e insere-o no final da pilha de layers; e insert, que recebe, alm do objeto, o ndice em que deve ser inserido. Aps colocar todos os ndices na ordem, chamado o mtodo setCell() para cada um, definindo que parte da imagem ser mostrada em cada clula. Tambm possvel trabalhar com grupos de clulas consecutivas, utilizando o mtodo fillCells(), ou at mesmo fazer a animao de clulas no adjacentes, atravs de um mecanismo que utiliza nmeros negativos para representar os pedaos de imagem que sero alternados. Ao chamar o mtodo paint(), tambm definido a partir de qual coordenada ser mostrado o contedo das layers. Dessa forma fica fcil reservar uma regio da tela para exibir a pontuao, o nmero de vidas e outras informaes, renderizadas independente das layers. Outra caracterstica interessante da classe LayerManager permitir a rolagem da tela (scrolling). Em vez de montar apenas a parte do cenrio a ser exibida, pode-se definir uma layer maior, contendo uma regio mais ampla ou at a fase inteira. A rolagem implementada utilizando o conceito de View Window, que determina a regio do LayerManager que deve ser desenhada. O mtodo setViewWindow() recebe como parmetro a posio e o tamanho da regio visvel, que so geralmente alternados quando varia a posio do personagem controlado pelo jogador. Outra classe a GameCanvas que suporta o ciclo bsico do jogo, implementando mecanismo para obter o estado das teclas, manipular o buffer grfico e enviar imagens para a tela. Essencialmente, todo jogo segue um ciclo bsico, executando continuamente at que o jogo seja interrompido. Primeiro verificada a entrada do usurio, depois atualizado o estado do jogo de acordo com essa entrada e com a lgica implementada; em seguida o buffer grfico atualizado e enviado para a tela; e o ciclo recomea. A parte principal da lgica de um jogo baseado na Game API implementada em uma subclasse de GameCanvas. Descendente de 20

javax.microedition.Icdui.Canvas, esta classe abstrata acrescenta as funcionalidades especificas para jogos, como a capacidade de verificar teclas e recursos para manipulao de um buffer grfico (off-screen buffer). No cdigo do construtor da subclasse de GameCanvas, logo na chamada ao construtor da superclasse, deve ser informado se os eventos normais das teclas de jogo devem ser ignoradas, evitando chamar listeners desnecessariamente. No restante do construtor, costumase inicializar os demais elelmentos grficos e adicion-los ao LayerManager. Em seguida, utilizado o mtodo getKeyStates() para verificar as teclas que esto precionadas naquele momento ou que foram pressionadas pelo menos uma vez desde a ltima chamada do mtodo. Para identificar as teclas, basta comparar as constantes que representam cada uma isoladamente com o retorno desse mtodo, utilizando o operador &. O ciclo do jogo implementado dentro do mtodo run(), pois ser executado em uma thread independente. No mtodo startApp() instanciada a classe GameCanvas e iniciada a thread responsvel pelo ciclo do jogo (Sabino, 2003). Na Fig. 5 podemos visualizar a estrutura da Game API e o pacote javax.microedition.Icdui.game.

Fig. 5 Elementos da Game API.

21

6. JOGO Disputa de PenltisApresenta-se um jogo para celular, que usa conceitos bsicos de programao

Java/MIDP. Iniciou-se o projeto com um estudo de caso do jogo intitulado como Disputa de Pnaltis. Como o nome sugere um jogo baseado em cobranas de pnaltis, onde o usurio o cobrador e tem que marcar gols na meta adversria. um jogo bem interessante, pois somos o pais do futebol e vai haver disputas para saber quem consegue fazer o maior numero de gols. um jogo de esporte onde o usurio ter que fazer seus gols escolhendo o canto certo para enganar o goleiro adversrio, o cenrio deste jogo se passa em um campo de futebol onde as imagens de fundo seria o estdio e os personagens animados seriam o jogador, goleiro, bola e as saudaes de defesa e gol. 6.1 Descrio funcional do jogo Ao selecionar Disputa de Pnaltis o jogo estar sendo iniciando e o usurio j estar entrando no ambiente do jogo, a partir desta etapa o usurio poder escolher entre continuar o jogo ou sair, continuando o usurio vai se deparar com o nvel de dificuldade do clssico Corinthians X Palmeiras onde Teves o cobrador dos pnaltis e Marcos o goleiro. O usurio ter trs opes de chute: ngulo esquerdo, ngulo direito e no alto do centro, a bola tem sempre a direo do gol, ou seja, no acerta a trave nem vai para fora. O goleiro interage atravs de nmeros randmicos, e sua posio inicial ser sempre o centro do gol. Cada gol marcado e defendido ser comemorado com uma saudao e tambm guardado em um contador, mostrando o placar para o usurio. Aps estas etapas o ciclo do jogo retorna a seu inicio e fica em pausa at que o usurio escolha uma opo de chute ou saia do jogo. 6.2 Projeto do jogo Inicia-se o projeto criando os diagramas de Caso de Uso e Classes para manter uma organizao. A maior dificuldade em modelarmos um sistema no est nos diagramas que temos que desenhar, no cdigo que devemos criar ou nas bases de dados que devemos projetar. Na realidade est nos requisitos que devemos gerenciar. Temos que entender o que o usurio quer, e muito mais importante, demonstrar que realmente entendemos seus desejos. 22

Portanto, necessitamos de um padro que permita o uso de linguagem natural, mas em um formato que reduza as ambigidades. Refiro-me ao caso de uso (Melo, 2002). 6.2.1 Diagrama de Caso de Uso O levantamento de requisitos de um sistema no uma tarefa fcil. O problema reside no fato de que estamos lidando com um ser humano que expressa suas idias, geralmente fora de ordem e sem muita explicao. Conforme (Melo, 2002) difcil encontrarmos o usurio que nos fornea a receita de bolo pronta para desenvolver seu sistema. Normalmente ele tem muitos problemas, muitas idias de como solucion-los e uma idia bem distorcida do que um sistema de computao pode fazer por ele. O diagrama de caso de uso esta dividido na parte escrita e na Fig. 6. O que pode ser feito: Ao 1 Escolhe o nvel A tecla select seleciona o nivel do jogo j pr estabelecido, caso seja selecionada alguma outra tecla, fica na espera da tecla correta. Ao 2 Jogar Tecla 1 o jogador chuta a bola para o angulo direito. Se a deciso do goleiro = 0, defesa ok, aparece na tela saudao (DEFENDE ... MARCOS !!! e o smbolo do Palmeiras), contador marca zero gol e uma defesa, caso contrrio gol, aparecer na tela a saudao (GOL e o smbolo do Corinthians), o contador marcar um gol e zero defesa e ir incrementando gols marcados e defesas. Tecla 3 o jogador chuta a bola para o angulo esquerdo. Se a deciso do goleiro = 2, defesa ok, aparece na tela saudao (DEFENDE ... MARCOS !!! e o smbolo do Palmeiras), contador marca zero gol e uma defesa, caso contrrio gol, aparecer na tela a saudao (GOL e o smbolo do Corinthians), o contador marcar um gol e zero defesa e ir incrementando gols marcados. Tecla 2 o jogador chuta a bola no alto do centro. Se a deciso do goleiro = 0, defesa ok, aparece na tela saudao (DEFENDE ... MARCOS !!! e o smbolo do Palmeiras), contador marca zero gol e uma defesa, caso contrrio gol, aparecer na tela a saudao (GOL e o smbolo do Corinthians), o contador marcar um gol e zero defesa e ir incrementando gols marcados e defesas. preciso esperar que ocorra todo este processo antes de realizar um novo chute, caso contrario as teclas no iro responder aos comandos. Dentro da 23

ao jogar s sero respondido os comandos das teclas 1,2 e 3 caso contrrio jogo continua em pausa, at ser selecionada a tecla correta ou a tecla que corresponde a opo sair. Ao 3 Sair O jogo ficara voltando a seu ciclo inicial de chute at ser seleciona a tecla sair, onde selecionada fecha o jogo.JOGO

SELECIONA NIVEL

SELECIONA OPCO DEFAULT USURIO JOGAR

SAIR

Fig.6 - Caso de Uso. 6.2.2 Diagrama de Classes O diagrama de classes (Fig. 7) a estrela principal de um sistema orientado a objetos. Neste diagrama possvel modelar detalhes e seus relacionamentos. Tambm so visveis outros elementos como interfaces e pacotes (Melo, 2002). O jogo Disputa de Pnaltis possui duas classes, a classe Disputa de Pnaltis e a classe My Canvas. A classe Disputa de Pnaltis responsvel pelo gerenciamento dos dispositivos de exibio e entrada do sistema. Possui mtodos que recupera propriedades do dispositivo e pede para que os objetos estejam indicados no dispositivo. Outros mtodos que tratam dos atributos do dispositivo so usados primeiramente com objetos Canvas. O jogo pode chamar o mtodo 24

do getDisplay() do comeo da chamada do startApp() at que a chamada do destroyApp() retorne. O objeto retornado por todas as chamadas ao getDisplay() ser o mesmo durante este tempo.Disputa de Penaltis ltis Cast : Form Creat : String Iten desenho : M y Canvas dificuldade : List Enter : command Fui : command sair : command entrada : ImagemIten level : int levels : string[] my thread : thread tela : Display chutar() : void commandAction(command c,Displayable d) : void destroyApp(boolean b): void getLevel() : void InicializateCanvas() : void pauseApp() : void run() : void StartApp() : void startthread() : void11

M y Canvas B ola : vector chutar : bolean cont : int deciso goleiro : int defesa : vector FramedeG ol : int gol : vector goleiro : vector G olFeito : boolean tela inicio : boolean estadio : image perna : imagem pos x : int pos y : int cai (boolean b) : void defende (int ball) : void K eyPressed (int code0 : void pegou () : boolean reset () : void set chute (boolean b) : void set frame (int frm) : void set gol (boolean g) : void set gol placar (boolean b) : void set pos (int posx, posy) : void

Fig. 7 Diagrama de Classes. A classe My Canvas manipula eventos e realiza chamadas para desenhar no display. A classe Canvas trocvel com outras classes e possui mtodos para manipular aes no jogo e eventos de teclas. Como outras subclasses de Displayable, a classe Canvas permite que o jogo registre um listener para comandos. 25

7. IMPLEMENTAOO jogo foi implementado atravs de quatro bibliotecas sendo as duas pimeiras do J2ME e as duas ultimas do prprio Java, import javax.microedition.lcdui.*; responsvel pela interface grfica, import javax.microedition.midlet.*; responsvel pelo ciclo de vida de uma MIDlet, import java.util.Vector; import java.util.Random; fazem parte da biblioteca Java.util uma responsvel por vetores e a outra nmeros randmicos. O movimento do goleiro e da bola ocorre atravs de vetores. Abaixo mostrado algumas imagens do jogo, na (Fig. 8) podemos visualizar a pimeira tela onde o usurio ir selecionar o jogo Disputa de Pnaltis apertando a tecla select, quando selecionada o usurio ir visualizar a tela j com o grfico de entrada do jogo (Fig. 9), onde o usurio poder se decidir em continuar ou sair do jogo. Entrando no jogo o usurio ira selecionar a disputa entre Teves X Marcos (Fig. 10), o que o levar ao cenrio do jogo Disputa de Pnaltis (Fig. 11).

. . .

. . .

Fig. 8 - Selecionando o Jogo.

Fig. 9 - Entrando no Jogo.

26

. . .

. . .

Fig. 10 - Teves X Marcos

Fig. 11 - Cenrio

27

8. CONCLUSOVisualiza-se que J2ME/MIDP uma tima ferramenta para quem pretende criar aplicaes ou jogos para celulares utilizando-se de um software poderoso e free, com a Sun fornecendo os downloads de todo o software necessrio, e que as inovaes e investimentos nesta are so crescentes, haja visto a evoluo da MIDP e os investimentos das industrias que fabricam e comercializam celulares para ganharem clientes. Tambm mostrado conceitos bsicos do processo de criao de jogos para celular, alguns erros que podem ocorrer durante esse processo e o caminho que foi seguido para a criao de um jogo na plataforma J2ME/MIDP para motivar prximos alunos da instituio a utilizarem o caminho j seguido e aperfeioando-o.

28

9. REFERNCIAS BIBLIOGRFICASANDRADE, Melissa de. Cesar Java tipo exportao. Online: http://www.rnt.com.br/edicao0405/especial04.asp. Recife: RNT Recuperado em 08-12-2004 CORBERA, Rodrigo Garcia . Java2ME ou J2ME Tutoriais de Programao em portugus Online: http://www.wirelessbrasil.org/wirelessbr/secoes/sec_java2me.html Recuperado em 01-10-2005. JAVAPOTI. Histria do Java - Parte Final Online : http://www.jroller.com/page/javapoti Recuperado em 12-12-2005 JANDL, P.Jr. Introduo ao Java. 1 Edio. So Paulo SP: Berkeley, 2002. MELO, Ana Cristina. Desenvolvendo Aplicaes com UML. 1 Edio. Rio de Janeiro RJ: Brasport, 2002. MOREIRA, Luis Carlos. Programao J2ME - Primeiros Passos. Online:http://www.j2b.com.br/modules.php?name=Sections&op=viewarticle&artid Recuperado em 18-04-2005. MUCHOW, John W. Core J2ME Tecnologia & MIDP. So Paulo: Makron Books, 2004. PAIVA, Fernando. O jogo das operadoras. Online: http://www.locz.com.br/not57.html. Rio de Janeiro: Locz, Recuperado em 08-12-2004. Sun Microsystems. Sun Developer Network Products and Technologies Technical Topics. Online: http://java.sun.com/j2se/downloads/index.html Recuperado em 22-06-2005 A.

29

Sun Microsystems. Sun Developer Network Products and Technologies Technical Topics. Online: http://java.sun.com/products/sjwtoolkit/download-2_2.html Recuperado em 22-06-2005 B. Sun Microsystems. Java 2 Platform, Micro Edition - Frequently Asked Questions. Online: http://java.sun.com/j2me/faq.html Recuperado em 12-09-2005 C. SABINO, Vanessa Cristina. Diverso Mvel Criao de jogos em J2ME Online:http://geocities.yahoo.com.br/vanessasabino/java/palestras/DiversaoMovel Recuperado em 15-10-2005. SABINO, Vanessa Cristina. GAME API. 10 edio Graja RJ: Java Magazine, 2003 The Java Community Process. Community Development of Java Technology Specifications Online: http://jcp.org. Recuperado em 12-09-2005 JCP. The Java Tutorial. Jar Files Online : http://java.sun.com/docs/books/tutorial/jar/index.html Recuperado em 02-10-2005 D.

30