2. Objetivo
Desenvolver jogos 2D para dispositivos móveis através do uso
da Game API do JavaME (MIDP 2.0).
Organize with Sections
Imagens do SilvesterMob, RPG
educacional para o aprendizado
de Geografia desenvolvido no
LabTEVE (Laboratório de
Tecnologias para o Ensino
Virtual e Estatística), UFPB.
3. Roteiro de Aula
O Game
A Game API Indo para a Builder e
Prática Exemplos
Adicionais
Introdução a Game API do JavaME
4. A Game API
Descrição das Classes e como usá-las
6. O que é a classe GameCanvas?
Trata-se de uma especialização da classe Canvas que possui
uma série de melhorias para o desenvolvimento de jogos.
Classe GameCanvas
Primeiro benefício em
relação a Canvas:
GameCanvas possui a
técnica de Double
Buffering implementada.
7. Que outros benefícios possui GameCanvas?
Com GameCanvas, é possível verificar as teclas pressionadas e
atualizar a tela a qualquer momento.
Classe GameCanvas
GameCanvas, ao contrário de Canvas, não força o
programador a utilizar os métodos paint() e keyPressed()
para desenhar na tela e verificar as teclas pressionadas,
respectivamente.
Com GameCanvas, o programador tem liberdade para
atualizar a tela e/ou verificar teclas pressionadas a qualquer
momento do LOOP do jogo.
Além disso, com GameCanvas é possível detectar várias
teclas pressionadas ao mesmo tempo, ao contrário de
Canvas.
8. E como isso funciona na prática?
GameCanvas implementa a interface Runnable e o LOOP do
jogo fica no método run().
Classe GameCanvas
9. A classe Layer é
abstrata e representa
qualquer elemento
visual da Game API
(incluindo os Sprites
citados anteriormente).
Layer possui alguns
Classe Layer métodos comuns a
todos os elementos
visuais da Game API,
conforme mostrado no
lado esquerdo.
10. Classe Sprite
Classe que representa uma imagem
(geralmente animada) no jogo, como
por exemplo os personagens,
arbustos, itens, etc;
A sua principal característica é o
suporte a frames e animação;
Possui detecção de colisão já
implementada, tanto por caixa
quanto pixel-a-pixel.
Suporta algumas transformações
sobre a imagem (Espelhamento, giro
90°, 180°, 270°, etc).
11. Como funciona a questão dos Frames e a Animação?
A imagem pode ser dividida em N partes, sendo cada uma dessas
partes um frame. Todos os frames precisam ter o mesmo tamanho.
A navegação entre os
frames pode ser feita
Classe Sprite
através dos métodos
nextFrame(),
prevFrame() e
setFrame(). Esse
último recebe como
parâmetro o número
do frame que deve
ser utilizado no
momento.
12. E quanto às transformações?
As transformações são realizadas pelo método setTransform() e se
baseiam em um ponto de referência definido por
setRefPixelPosition().
Classe Sprite
13. Classe TiledLayer
Usada geralmente para representar mapas, utilizando um array
bidimensional com índices de imagens. Suporta tiles animadas (efeito
de água se movimentando, arbusto sob efeito de evento, etc).
14. Classe LayerManager
Responsável por gerenciar todos os Layers (camadas) do jogo. Pode-
se definir a posição de cada camada, adicionar ou remover camadas,
etc.
15. Indo para a Prática
Construindo um LOOP de jogo simples com a Game API