Java ME - Game API

3.569 visualizações

Publicada em

CCT - Outubro de 2009

Publicada em: Tecnologia, Educação
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.569
No SlideShare
0
A partir de incorporações
0
Número de incorporações
28
Ações
Compartilhamentos
0
Downloads
76
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java ME - Game API

  1. 1. Introdução ao Desenvolvimento de Jogos 2D/3D em Java ME (Parte 1) Daniel Valente de Macedo 7° Semestre
  2. 2. Por que Java ME?  Portabilidade, pois ja é suportado pela maioria dos dispositivos móveis disponíveis no mercado.  Curva de aprendizagem pequena.  Possui ótimas ferramentas de desenvolvimento como o Eclipse e o Netbeans.  Comunidade ativa e participativa (forums, blogs, etc).
  3. 3. Plataforma Java ME
  4. 4. Ciclo de Vida do MIDlet Start startApp() Paused pauseApp() Active destroyApp() destroyApp() Destroyed
  5. 5. Desenvolvemendo Jogos com MIDP/CLDC 1.0  Não possui suporte a ponto flutuante (CLDC 1.0), dificultando o desenvolvimento de jogos 3D.  Precário suporte a som, somente a beeps.  Não possui suporte a transparência.  Não é possivel tratar múltiplas teclas pressionadas ao mesmo tempo.
  6. 6. Desenvolvemendo Jogos com MIDP/CLDC 1.0 (Cont.)  Exemplo: public class MeuJogo extends Canvas implements Runnable { public void run() { Não é possivel while(true) { ter o controle repaint(); de quando que o paint() será } chamado. } public void paint(Graphics g) { Também não é // Código de desenho possivel saber quando o keyPressed() é } chamado, podendo ocorrer um atraso na resposta, protected void keyPressed(int keyCode) { resultando em algo // Tratamento de teclas indesejado. } }
  7. 7. Desenvolvemendo Jogos com MIDP/CLDC 1.0 (Cont.)  Sem o suporte a double buffering, o "pisca- pisca" é constante. Double Buffering: Lógica de Imagem na Tela do Passo 1: desenho memória dispositivo Lógica de Imagem na Tela do Passo 2: desenho memória dispositivo
  8. 8. Desenvolvemendo Jogos com a Game API  Disponível no MIDP 2.0  Possui um conjunto de classes bem otimizadas voltadas ao desenvolvimento de jogos.  Possui suporte a ponto flutuante (CLDC 1.1)  Suporte completo a som (mp3, wav, etc).  Possui suporte a transpareência.  É possível tratar múltiplas teclas pressionadas ao mesmo tempo.
  9. 9. Classes da Game API
  10. 10. Game API: GameCanvas  Possui double buffering implementado.  É possível atualizar a tela no momento desejado, onde todos componentes visuais já foram atualizados.  É possível detectar várias teclas pressionadas ao mesmo tempo, diferentemente do Canvas.
  11. 11. Game API: GameCanvas  Exemplo: public class MeuJogo extends GameCanvas implements Runnable { public void run() { Graphics g = getGraphics(); while(true) { Verificação de teclas int keyState = getKeyStates(); if((keyState & UP_PRESSED) != 0) { // Tecla UP está pressionada } Lógica de desenho else if((keyState & DOWN_PRESSED) != 0) { // Tecla DOWN está pressionada } render(g); // Logica de desenho Desenha a imagem do buffer na tela do flushGraphics(); //Atualiza tela dispositivo } } }
  12. 12. Game API: Layer  Classe abstrata que representa qualquer elemento visual na Game API.  Possui metodos como:  boolean isVisible()  void setVisible(boolean visible)  void move(int dx, int dy)  voi setPosition(int x, int y)  abstract void paint(Graphics g)
  13. 13. Game API: Sprite  Classe que representa uma imagem no jogo, por exemplo: Personagem e o Inimigo.  Possui suporte a frames e animação.  Possui detecção de colisão por caixa e pixel-a- pixel.  Suporta algumas transformações sobre a imagem (Espelhamento, 90°, 180°, 270°...).
  14. 14. Game API: Sprite  Frames e animação: Divisão interna Arquivo .png no Sprite
  15. 15. Game API: Sprite  Transformações: macaco.setTransform(Sprite.TRANS_ROT90) macaco.setTransform(Sprite.TRANS_NONE)
  16. 16. Game API: TiledLayer  Classe que normalmente é usada para representações de mapas, utilizando uma matriz bidimensional com índices de imagens.  Possui suporte a tiles animadas (efeito de água se movimentando e etc).
  17. 17. Game API: TiledLayer
  18. 18. Game API: LayerManager  Classe responsável por gerenciar todos os Layers.  Sprite  TiledLayer
  19. 19. Game Loop
  20. 20. Game Loop (cont.) public class MeuJogo extends GameCanvas public void run() { implements Runnable { Graphics g = getGraphics(); private boolean running; while (running) { private int delay = 30; checkInput(); public SimpleGameCanvas() { update(); super(true); render(g); } flushGraphics(); public void start() { try { Thread.sleep(delay); } running = true; catch (InterruptedException ie) { stop(); } Thread t = new Thread(this); } t.start(); } } private void update() {} public void stop() { running = false; } private void checkInput() {} private void render(Graphics g) {} }
  21. 21. FIM Perguntas ou Dùvidas?
  22. 22. Contato Obrigado! danielvalentemacedo@gmail.com http://danielvalente.com.br

×