Documente Academic
Documente Profesional
Documente Cultură
Programacin de juegos
en J2ME para celulares
Sebastin Montabone
Introduccin
Java
J2SE:
Standard Edition
J2EE: Enterprise Edition
J2ME: Micro Edition
Configuraciones
Mquina
CLDC 1.1
CLDC 1.0
Introduccin (cont.)
Perfiles
Interfaz
de ms alto nivel
Introduccin (cont.)
MIDP1.0
MIDP2.0
Soporte multimedia
Soporte para pintado a pantalla completa
Soporte para transparencias
Conectividad ampliada (HTTP, sockets, etc)
Mejoras especficas para desarrollo de juegos
Slo algunos celulares soportan MIDP2.0
Programacin en J2ME
Clases pblicas
javax.microedition.midlet
startApp()
pauseApp()
destroyApp()
Destruido
Pausado
javax.microedition.lcdui.Display
Display
celular
Display.getDisplay(MIDlet m)
Obtiene
Display.setCurrent(Displayable d)
Setea
javax.microedition.lcdui.Displayable
Displayable
Screen
Form
ChoiceGroup
DateField
ImageItem
Gauge
StringItem
TextField
Alert
List
TextBox
Canvas
Displayable.setCommandListener(CommandLi
stener cl)
Especifica
Displayable.addCommand(Command c)
Agrega
un comando a la pantalla
Displayable.removeCommand(Command c)
Elimina
un comando de la pantalla
keyPressed(int keycode)
void keyReleased(int keycode)
void keyRepeated(int keycode)
int getGameAction(int keycode)
Graphics
drawImage
drawString
drawRect
drawRoundRect
drawLine
drawArc
fillRect
fillRoundRect
fillArc
setColor
setStrokeStyle
Game Loop
Leer
Game API
javax.microedition.lcdui.game.*
GameCanvas
Layer
LayerManager
Sprite
TiledLayer
Slo
GameCanvas
Extiende
a Canvas
Agrega un buffer fuera de pantalla
Permite hacer polling a las teclas
El mtodo getGraphics() retorna el buffer
Al finalizar de pintar el frame fuera de la
pantalla, se llama a flushGraphics()
setFullScreenMode(Boolean)
GameCanvas
int
getKeyStates()
UP_PRESSED
DOWN_PRESSED
LEFT_PRESSED
RIGHT_PRESSED
FIRE_PRESSED
Cmo
usarlo?
keyStates=getKeyStates();
If(keyStates & LEFT_PRESSED != 0)
Layer
Base
Sprite
Extiende
int
int
setFrameSequence(int[] sequence)
getFrameSequenceLength()
Retorna el nmero de frames que tiene la
secuencia actual
getRawFramesCount()
Retorna el nmero de frames que tiene la
imagen original del sprite
TRANS_NONE
TRANS_ROT90
TRANS_ROT180
TRANS_ROT270
TRANS_MIRROR
TRANS_MIRROR_ROT90
TRANS_MIRROR_ROT180
TRANS_MIRROR_ROT270
getHeight()/2)
TiledLayer
TiledLayer(int
Void
Void
LayerManager
Sirve
15 FPS o menos
Aprox. 70 milisegundos por frame
elapsed=startTime;
startTime=System.currentTimeMillis();
elapsed=startTime-elapsed;
If(elapsed < MILLISECS_PER_FRAME)
{
thread.sleep(MILLISECS_PER_FRAME-elapsed);
}
Else
{
thread.yield();
}
Nokia
http://forum.nokia.com/
Siemens.
http://www.siemens-mobile.com/developer
Sony Ericsson.
http://developer.sonyericsson.com/
Motorola.
http://www.motocoder.com/
Instalacin
Extra:
Tabla comparativa de celulares con sus
configuraciones, perfiles, y otros datos.
http://developers.sun.com/techtopics/mobility/device/d
evice