Vous êtes sur la page 1sur 60

| JavaOne 2003 | Session 1439

Desenvolvendo Jogos
com MIDP 2.0
Mark A. Patel
Principal Staff Engineer
Motorola
Vanessa Sabino
GUJ
| JavaOne 2003 | Session 1439 2
Desenvolvendo Jogos com MIDP 2.0
Aprender sobre as novas
funcionalidades do MIDP 2.0 para
grficos e jogos
Entender os conceitos
necessrios para utilizlas
efetiva!ente e! suas aplica"#es
| JavaOne 2003 | Session 1439 3
A Histria dos Jogos para Celulares
Jogos para celulares estiveram
presentes desde o princpio...
| JavaOne 2003 | Session 1439 4
A Histria dos Jogos para Celulares
$%&& ' (an"a!ento dos )elulares
| JavaOne 2003 | Session 1439 5
A Histria dos Jogos para Celulares
$%%& ' Sna*e
| JavaOne 2003 | Session 1439 6
A Histria dos Jogos para Celulares
2000 ' MIDP $.0
| JavaOne 2003 | Session 1439 7
A Histria dos Jogos para Celulares
200+ ' MIDP 2.0
| JavaOne 2003 | Session 1439 8
Desenvolvendo Jogos com MIDP
2.0

A Game API
,a!e)anvas
(a-er
Sprite
.iled(a-er
(a-erManager
)ollision Detection

Mel/orias na !anipula"0o grfica e! bai1o


n2vel
| JavaOne 2003 | Session 1439
A Game API
| JavaOne 2003 | Session 1439 10
A Game API

Prov funcionalidades orientadas a jogos 2D

(ida co! vrias tarefas co!uns a vrias


aplica"#es
Si!plifica o desenvolvi!ento
3eduz o ta!an/o da aplica"0o
Mel/ora a perfor!ance
| JavaOne 2003 | Session 1439 11
A Game API
| JavaOne 2003 | Session 1439 12
GameCanvas

Ligao com a interface com o usurio

Mais apropriada para jogos 4ue a )anvas


key polling
screen buffer dedicado
flushing sncrono
| JavaOne 2003 | Session 1439 13
GameCanvas
Verifica Input Usurio
Atualiza estado de acordo
com input e lgica do jogo
Atualiza Screen Buffer
Envia para Display
| JavaOne 2003 | Session 1439 14
GameCanvas
KeyPolling

!5todo getKeyStates() retorna u! n6!ero


inteiro representando o estado das teclas de
jogo

)ada tecla 5 representada por u! bit


$ 7 pressionado
0 7 n0o pressionado

8 poss2vel detectar !ais de u!a tecla


pressionada si!ult9nea!ente

Pode n0o ser suportado e! todos aparel/os


| JavaOne 2003 | Session 1439 15
GameCanvas
KeyPolling
int keys = getKeyStates();
if ((keys & UP_PRESSED) != 0)
yPosition--;
if ((keys & DOWN_PRESSED) != 0)
yPosition;
if ((keys & !"RE_PRESSED) != 0)
fi#e();
| JavaOne 2003 | Session 1439 16
GameCanvas
KeyPolling

As teclas pressionadas s0o ar!azenadas entre


as c/a!adas do getKeyStates()
| JavaOne 2003 | Session 1439 17
GameCanvas
KeyPolling

Este co!porta!ento pode ser desabilitado


fazendo c/a!adas duplas ao !5todo
getKeyStates()
| JavaOne 2003 | Session 1439 18
GameCanvas
Screen Buffer

Di!ens#es iguais a da ,a!e)anvas

getWi$t%()

get&eig%t()

:0o 5 !odificado por outras entidades

;bjetos ,rap/ics pode! ser obtidos confor!e


necessrio

<lus/ing s2ncrono
Screen buffer inteiro ou parcial
| JavaOne 2003 | Session 1439 19
Layer

Entidade visual bsica

Tamanho retangular
x, y, largura, altura

Visvel ou invisvel

Superclasse de Sprite e TiledLayer


| JavaOne 2003 | Session 1439 20
Sprite

Mostra um de vrios quadros (frames)

.ransfor!a"#es bsicas

Pixel de referncia si!plifica o posiciona!ento


| JavaOne 2003 | Session 1439 21
Sprite
Frames
| JavaOne 2003 | Session 1439 22
Sprite
Frames
S'#ite $($e = ne) S'#ite(i*g+ ,-+ ,.);
| JavaOne 2003 | Session 1439 23
Sprite
Frames

Quadro atual renderizado quando o mtodo


paint chamado

Controle direto do quadro a ser mostrado

set!#a*e"n$e/(int f#a*e)

ne/t!#a*e()

'#e0!#a*e()
| JavaOne 2003 | Session 1439 24
Sprite
Seqncias de Frames

Seqncia padro
Mostra cada 4uadro e! orde!
0= $= 2= += >= 0= $= 2= += >= 0= $= 2= +...

Se4?@ncia especial

Define u!a orde! arbitrria e! 4ue os 4uadros


aparece!

Atil para ani!a"#es

Beito fcil de variar o te!po e! 4ue as fra!es


aparece!
| JavaOne 2003 | Session 1439 25
Sprite
Seqncias de Frames
| JavaOne 2003 | Session 1439 26
Sprite
Transformaes
| JavaOne 2003 | Session 1439 27
Sprite
Pixel de referncia

Um pixel selecionado para definir a


localizao do Sprite
relativo ao canto superior esquerdo do quadro
$($e1$efineRefe#en2ePi/e3(4+5);
| JavaOne 2003 | Session 1439 28
Sprite
Pixel de referncia

Funciona como o centro das transformaes


$($e1set6#ansfo#*(S'#ite16R7NS_RO640);
| JavaOne 2003 | Session 1439 29
Sprite
Pixel de referncia

Pode ser utilizado para determinar e obter a


localizao do Sprite

setRefPi/e3Position(int /+ int y);

int getRefPi/e38();

int getRefPi/e39();
| JavaOne 2003 | Session 1439 30
TiledLayer

Matriz de clulas

Cada clula pode mostrar uma tile

tiles animadas simplificam os efeitos de


animao
| JavaOne 2003 | Session 1439 31
TiledLayer
Tiles
| JavaOne 2003 | Session 1439 32
TiledLayer
Tiles
| JavaOne 2003 | Session 1439 33
TiledLayer
Clulas

Podem mostrar uma tile ou ficar vazias (0)


Clulas vazias so transparentes

O contedo de uma clula pode ser alterado a


qualquer momento
set:e33(int 2o3+ int #o)+
int ti3e"n$e/)
fi33:e33s(int 2o3+ int #o)+
int )i$t%+ int %eig%t+
int ti3e"n$e/)
| JavaOne 2003 | Session 1439 34
TiledLayer
Tiles Animadas

Tiles especiais que so ligadas dinmicamente


a uma tile esttica
int foo$6i3e = *a;e12#eate7ni*ate$6i3e(.);
| JavaOne 2003 | Session 1439 35
TiledLayer
Tiles Animadas
| JavaOne 2003 | Session 1439 36
TiledLayer
Tiles Animadas

A tile pode ser alterada conforme necessrio


*a;e1set7ni*ate$6i3e(foo$6i3e+ <);
| JavaOne 2003 | Session 1439 37
TiledLayer
Tiles Animadas
| JavaOne 2003 | Session 1439 38
LayerManager

Gerencia uma lista de Layers

Simplifica rolagem de tela e disposio dos


elementos

Automatiza a renderizao das Layers


| JavaOne 2003 | Session 1439 39
LayerManager
Adicionando camadas

Layers so adicionadas a uma lista indexada

a''en$(=aye# 3)

inse#t(=aye# 3 + int in$e/)

(ista i!plica e! u!a zorder


Cndice 0 5 o !ais prD1i!o do usurio
Cndices !aiores est0o !ais longe do usurio
| JavaOne 2003 | Session 1439 40
LayerManager
View Window

Controla o que visto pelo usurio

set>ie)Win$o)(int /+ int y+ int


)i$t%+ int %eig%t)

Efeitos de scrolling s0o obtidos !ovendo a vieE


EindoE
| JavaOne 2003 | Session 1439 41
LayerManager
Renderizando

A visualizao de uma =aye#?anage# pode


ser renderizada em uma localizao especfica
na tela

'aint(@#a'%i2s+ int /+ int y)

(a-ers fora da rea de visualiza"0o n0o s0o


renderizadas
| JavaOne 2003 | Session 1439 42
Deteco de Coliso

)/eca vrios tipos de colis0oF

S'#ite 0s1 S'#ite

S'#ite 0s1 6i3e$=aye#

S'#ite 0s1 "*age

M5todos do S'#ite
3et9ngulo de colis0o definido pelo usurio

Goundar-level ou pi1ellevel
| JavaOne 2003 | Session 1439 43
Deteco de Coliso
3et9ngulo de )olis0o

Define a regi0o de u! S'#ite a ser inclu2da


na detec"0o de colis0o

Ajustase auto!atica!ente 4uando as


transfor!a"#es s0o aplicadas
| JavaOne 2003 | Session 1439 44
Deteco de Coliso
3et9ngulo de )olis0o
$efine:o33isionRe2tang3e(int /+ int y+
int )i$t%+ int %eig%t)
| JavaOne 2003 | Session 1439 45
Deteco de Coliso
Detec"0o pela borda

Deter!inada pelas bordas de duas entidades


Rpida
Limitada a formas retangulares
| JavaOne 2003 | Session 1439 46
Deteco de Coliso
Detec"0o pelo pi1el

Deter!ina 4uando dois pi1els opacos est0o


sobrepostos
Mais lenta
Pode detectar coliso entre formas arbitrrias
| JavaOne 2003 | Session 1439
Melhorias para
Grficos em
baixo nvel
| JavaOne 2003 | Session 1439 48
Melhorias para Grficos

Estende as capacidades bsicas do MIDP 1.0

Novos mtodos na classe @#a'%i2s

Mel/orias na classe "*age


| JavaOne 2003 | Session 1439 49
Novos mtodos na Graphics
<ills.riangle

Preenche um tringulo utilizando a cor de


desenho

Os vrtices podem estar em qualquer ordem


| JavaOne 2003 | Session 1439 50
Novos mtodos na Graphics
)op-Area

Copia uma regio retangular de pixels

Origem e destino podem estar sobrepostos


| JavaOne 2003 | Session 1439 51
Novos mtodos na Graphics
DraE3egion

Desenha uma regio de uma imagem


x, y, altura, largura

Transformaes podem ser aplicadas regio


As mesmas que as definidas em Sprite

Pontos ncora ficam em termos da regio


transformada
| JavaOne 2003 | Session 1439 52
Novos mtodos na Graphics
DraE3,G

3enderiza u!a regi0o de valores 3,G

Dados fornecidos e! u!a arra- de inteiros


010033,,GG
01AA33,,GG

Pode ser especificado u! offset e


s2an3engt%
| JavaOne 2003 | Session 1439 53
Melhorias em imagens

Suporte bsico de transparncia obrigatrio


Alpha blending opcional

Apenas para imagens imutveis


Imagem mutveis so sempre opacas
| JavaOne 2003 | Session 1439 54
Melhorias em imagens
CreateImage

InputStream de dados binrios

Array de valores RGB


for!ato 01AA33,,GG

3egi0o de u!a i!age!


1= -= altura= largura
.ransfor!a"#es
| JavaOne 2003 | Session 1439 55
Melhorias em imagens
getRGB

;bt5! os valores dos pi1els da regi0o de u!a


i!age!

Dados ar!azenados e! u!a arra- de inteiros


fornecida ao !5todo
for!ato 01AA33,,GG
| JavaOne 2003 | Session 1439 56
Resumo

A Game API prov funcionalidades especficas


para jogos

Melhorias no Graphics e Image provem novas


possibilidades e maior flexibilidade

Aumenta a performance, simplifica o


desenvolvimento e melhora a qualidade do
contedo
| JavaOne 2003 | Session 1439 57
Se voc lembrar apenas de uma coisa...
O futuro dos jogos para celulares
est nas suas mos!
| JavaOne 2003 | Session 1439
Q&A
| JavaOne 2003 | Session 1439
java.sun.com/javaone/
sf
| JavaOne 2003 | Session 1439 60
Mais Informaes
Artigos

http://wireless.java.sun.com/blueprints/articles/game/

http://www.forum.nokia.com/main/1,6566,050_20,00.html

http://www.microjava.com/

http://www.jasonlam604.com/books.php
Comunidade

http://www.guj.com.br/

j2me-list@soujava.dev.java.net

Contato

vanessasabino@yahoo.com.br

http://www.alemdojava.cjb.net/ cdigo fonte

Vous aimerez peut-être aussi