SlideShare una empresa de Scribd logo
PROGRAMACIÓN DE JUEGOS EN
J2ME PARA CELULARES
Programación en J2ME
• Canvas permite interpretar el input del usuario
– void keyPressed(int keycode)
– void keyReleased(int keycode)
– void keyRepeated(int keycode)
– int getGameAction(int keycode)
• Posee constantes para comparar
– KEY_NUM0
– KEY_NUM9
– KEY_STAR
– KEY_POUND
– LEFT, RIGHT, UP, DOWN, FIRE
– GAME_A, GAME_B, GAME_C, GAME_D
Programación en J2ME (cont.)
• La clase que extienda Canvas tiene que
implementar el método abstracto
Paint(Graphics g)
• En esa función definimos lo que queremos
pintar
• Cada vez que queremos que se refresque la
pantalla, llamamos al método repaint()
Programación en J2ME (cont.)
• Graphics
– drawImage
– drawString
– drawRect
– drawRoundRect
– drawLine
– drawArc
– fillRect
– fillRoundRect
– fillArc
 setColor
 setStrokeStyle
 …
Programación en J2ME (cont.)
• Game Loop
– Leer Input del usuario
– Simular el mundo (IA, colisiones, etc.)
– Dibujar el resultado
– Esperar para completar el tiempo del frame
• Hasta ahora, todo lo visto se puede
implementar en MIDP1.0
Programación en J2ME (cont.)
• Game API
– javax.microedition.lcdui.game.*
• GameCanvas
• Layer
• LayerManager
• Sprite
• TiledLayer
– Sólo disponible desde MIDP2.0
Programación en J2ME (cont.)
• GameCanvas
– Extiende a Canvas
– Agrega un buffer fuera de pantalla
– Permite hacer polling a las teclas
– El método getGraphics() retorna el buffer
– Al finalizar de pintar el frame fuera de la
pantalla, se llama a flushGraphics()
– setFullScreenMode(Boolean)
Programación en J2ME (cont.)
• GameCanvas
– int getKeyStates()
• UP_PRESSED
• DOWN_PRESSED
• LEFT_PRESSED
• RIGHT_PRESSED
• FIRE_PRESSED
– Cómo usarlo?
• keyStates=getKeyStates();
• If(keyStates & LEFT_PRESSED != 0)
– Usuario presionó izquierda…
Programación en J2ME (cont.)
• Layer
– Base para Sprite y TiledLayer
– void setPosition(int x, int y)
– void setVisible(int x, int y)
– boolean isVisible()
– void move(int dx, int dy)
– int getHeight()
– int getWidth()
– int getX()
– int getY()
Programación en J2ME (cont.)
• Sprite
– Extiende Layer agregando animación, detección de
colisión, transformaciones de imagen
– Sprite(Image imagen)
– Sprite(Image imagen, int frameWidth, int frame Height)
– Sprite(Sprite s)
– collidesWith(Image imagen, int x, int y, bool pixelLevel)
– collidesWith(Sprite s, bool pixelLevel)
– collidesWith(TiledLayer t, bool pixelLevel)
– defineCollisionRectangle(int x, int y, int width, int height)
Programación en J2ME (cont.)
• Animación del Sprite
– void setFrameSequence(int[] sequence)
• Establece una secuencia a partir de los frames de la
imagen original del sprite
– int getFrameSequenceLength()
• Retorna el número de frames que tiene la secuencia
actual
– int getRawFramesCount()
• Retorna el número de frames que tiene la imagen
original del sprite
Programación en J2ME (cont.)
• Animación del Sprite
– void setFrame(int sequenceIndex)
• Selecciona un frame en particular de la secuencia para el
próximo paint del sprite
– void nextFrame()
• Selecciona el siguiente frame en la secuencia
– void prevFrame()
• Selecciona el frame anterior en la secuencia
– int getFrame()
• Retorna el número de frame dentro de la secuencia que está
selecconado actualmente
– void paint(Graphics g)
• Pinta el Sprite. El pixel de referencia es el de arriba a la
izquierda
Programación en J2ME (cont.)
• Transformaciones del Sprite
– defineReferencePixel(getWidth()/2, getHeight()/2)
– setTransform(transformación)
• TRANS_NONE
• TRANS_ROT90
• TRANS_ROT180
• TRANS_ROT270
• TRANS_MIRROR
• TRANS_MIRROR_ROT90
• TRANS_MIRROR_ROT180
• TRANS_MIRROR_ROT270
Programación en J2ME (cont.)
• TiledLayer
– TiledLayer(int columns, int rows, Image image, int
tileWidth, int tileHeight)
• Especifica las columnas y filas del fondo, imagen donde estás
los tiles y sus dimensiones
– Void setCell(int col, int row, int tileIndex)
• Pinta en (col, row) con el tile tileIndex (parte de 1, el 0 es
transparente)
– Void fillCells(int col, int row, int numCols, int numRows,
int tileIndex)
• setCell pero en un rectángulo
Programación en J2ME (cont.)
• LayerManager
– Sirve para pintar grupos de Layers
– Void append(Layer l)
– Void insert(Layer l, int index)
– Int getSize()
– Void remove(Layer l)
– Void setViewWindow(int x, int y, int width, int height)
– Void paint(Graphics g, int x, int y)
– Layer getLayerAt(int index)
Programación en J2ME (cont.)
• Esperar para completar el tiempo del frame
– 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();
}

Más contenido relacionado

La actualidad más candente

Api java 2D
Api  java 2DApi  java 2D
Api java 2DESPOL
 
Matlab ® investigacion
Matlab ® investigacionMatlab ® investigacion
Matlab ® investigacion
Josué A
 
Gráficas de fuanciones
Gráficas de fuancionesGráficas de fuanciones
Gráficas de fuancionesAriel Guananga
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dSebastian Cuenca
 
Clase Graficacion
Clase GraficacionClase Graficacion
Clase GraficacionSilvia Mdl
 
Teteras - Introducción a los gráficos 3D por ordenador
Teteras - Introducción a los gráficos 3D por ordenadorTeteras - Introducción a los gráficos 3D por ordenador
Teteras - Introducción a los gráficos 3D por ordenador
Adrián Arroyo Calle
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2jcbp_peru
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3DEdu Morán
 
Gráficas en Matlab
Gráficas en MatlabGráficas en Matlab
Gráficas en MatlabGaby Solano
 
Matlab graficas en 2 d y 3d
Matlab   graficas en 2 d y 3dMatlab   graficas en 2 d y 3d
Matlab graficas en 2 d y 3dJohn Jayro
 
Taller i matemáticas ii (1)
Taller i matemáticas ii (1)Taller i matemáticas ii (1)
Taller i matemáticas ii (1)
Teofilo Morales Maestre
 

La actualidad más candente (15)

Api java 2D
Api  java 2DApi  java 2D
Api java 2D
 
Matlab ® investigacion
Matlab ® investigacionMatlab ® investigacion
Matlab ® investigacion
 
Gráficas de fuanciones
Gráficas de fuancionesGráficas de fuanciones
Gráficas de fuanciones
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3d
 
Gráficas en matlab
Gráficas en matlabGráficas en matlab
Gráficas en matlab
 
Clase Graficacion
Clase GraficacionClase Graficacion
Clase Graficacion
 
Teteras - Introducción a los gráficos 3D por ordenador
Teteras - Introducción a los gráficos 3D por ordenadorTeteras - Introducción a los gráficos 3D por ordenador
Teteras - Introducción a los gráficos 3D por ordenador
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
Matlab sesion3
Matlab sesion3Matlab sesion3
Matlab sesion3
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3D
 
Gráficas en Matlab
Gráficas en MatlabGráficas en Matlab
Gráficas en Matlab
 
triqui
triquitriqui
triqui
 
Matlab graficas en 2 d y 3d
Matlab   graficas en 2 d y 3dMatlab   graficas en 2 d y 3d
Matlab graficas en 2 d y 3d
 
triqui-proyecto final
triqui-proyecto finaltriqui-proyecto final
triqui-proyecto final
 
Taller i matemáticas ii (1)
Taller i matemáticas ii (1)Taller i matemáticas ii (1)
Taller i matemáticas ii (1)
 

Destacado

Glosario de terminos sobre Java
Glosario de terminos sobre JavaGlosario de terminos sobre Java
Glosario de terminos sobre Java
Jose Rodriguez
 
Tarea2 Abel Morales Espinoza
Tarea2 Abel Morales EspinozaTarea2 Abel Morales Espinoza
Tarea2 Abel Morales Espinoza
guesta3fc85a
 
ADMINISTRACIÓN DE REDES
ADMINISTRACIÓN DE REDESADMINISTRACIÓN DE REDES
ADMINISTRACIÓN DE REDESjlgmvj
 
20 Codigos
20 Codigos20 Codigos
20 Codigos
Elizabeth Reyna
 
Ejercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móvilesEjercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móviles
Enrique Vargas
 
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres AltezJ2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
a19987225
 
Java j2me prev
Java j2me prevJava j2me prev
Java j2me prevjtk1
 

Destacado (9)

Glosario de terminos sobre Java
Glosario de terminos sobre JavaGlosario de terminos sobre Java
Glosario de terminos sobre Java
 
Tarea2 Abel Morales Espinoza
Tarea2 Abel Morales EspinozaTarea2 Abel Morales Espinoza
Tarea2 Abel Morales Espinoza
 
ADMINISTRACIÓN DE REDES
ADMINISTRACIÓN DE REDESADMINISTRACIÓN DE REDES
ADMINISTRACIÓN DE REDES
 
20 Codigos
20 Codigos20 Codigos
20 Codigos
 
Ejercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móvilesEjercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móviles
 
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres AltezJ2ME Netbeans Mobility Pack - Leonardo Torres Altez
J2ME Netbeans Mobility Pack - Leonardo Torres Altez
 
app
appapp
app
 
Java j2me prev
Java j2me prevJava j2me prev
Java j2me prev
 
J2 me
J2 meJ2 me
J2 me
 

Similar a Semana 12 j2_me_api_bn_animacion

Plots
PlotsPlots
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
Plain Concepts
 
Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02
Juan Cardona
 
Applets.pdf
Applets.pdfApplets.pdf
Applets.pdf
IsaacCastro64
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
kdeespana
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
Roberto Perales
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
Roberto Perales
 
Explicacion de pygame para python de la UTN de Argentina
Explicacion de pygame para python de la UTN de ArgentinaExplicacion de pygame para python de la UTN de Argentina
Explicacion de pygame para python de la UTN de Argentina
alvarogabrielmedici
 
Inicialización del modo gráfico de C
Inicialización del modo gráfico de CInicialización del modo gráfico de C
Inicialización del modo gráfico de C
Benjamín Joaquín Martínez
 
AUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptxAUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptx
LuisFelipe97603
 
Xna game studio presentación 05
Xna game studio   presentación 05Xna game studio   presentación 05
Xna game studio presentación 05
Juan Cardona
 
Imagenes
ImagenesImagenes
Renderización en java
Renderización en javaRenderización en java
Renderización en javaaleja0940
 
Paralela6
Paralela6Paralela6
Paralela6
Abraham Zamudio
 

Similar a Semana 12 j2_me_api_bn_animacion (20)

Plots
PlotsPlots
Plots
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Xna game studio presentación 02
Xna game studio   presentación 02Xna game studio   presentación 02
Xna game studio presentación 02
 
Intro pygamev2
Intro pygamev2Intro pygamev2
Intro pygamev2
 
Applets.pdf
Applets.pdfApplets.pdf
Applets.pdf
 
Introducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGLIntroducción a las librerías PyGame y PyOpenGL
Introducción a las librerías PyGame y PyOpenGL
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
 
Explicacion de pygame para python de la UTN de Argentina
Explicacion de pygame para python de la UTN de ArgentinaExplicacion de pygame para python de la UTN de Argentina
Explicacion de pygame para python de la UTN de Argentina
 
!Prograc10
!Prograc10!Prograc10
!Prograc10
 
Lab2-POO
Lab2-POOLab2-POO
Lab2-POO
 
Inicialización del modo gráfico de C
Inicialización del modo gráfico de CInicialización del modo gráfico de C
Inicialización del modo gráfico de C
 
Java modografico
Java modograficoJava modografico
Java modografico
 
AUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptxAUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptx
 
Xna game studio presentación 05
Xna game studio   presentación 05Xna game studio   presentación 05
Xna game studio presentación 05
 
Sistema de acotado
Sistema de  acotadoSistema de  acotado
Sistema de acotado
 
Imagenes
ImagenesImagenes
Imagenes
 
Renderización en java
Renderización en javaRenderización en java
Renderización en java
 
Balas
BalasBalas
Balas
 
Paralela6
Paralela6Paralela6
Paralela6
 

Semana 12 j2_me_api_bn_animacion

  • 1. PROGRAMACIÓN DE JUEGOS EN J2ME PARA CELULARES
  • 2. Programación en J2ME • Canvas permite interpretar el input del usuario – void keyPressed(int keycode) – void keyReleased(int keycode) – void keyRepeated(int keycode) – int getGameAction(int keycode) • Posee constantes para comparar – KEY_NUM0 – KEY_NUM9 – KEY_STAR – KEY_POUND – LEFT, RIGHT, UP, DOWN, FIRE – GAME_A, GAME_B, GAME_C, GAME_D
  • 3. Programación en J2ME (cont.) • La clase que extienda Canvas tiene que implementar el método abstracto Paint(Graphics g) • En esa función definimos lo que queremos pintar • Cada vez que queremos que se refresque la pantalla, llamamos al método repaint()
  • 4. Programación en J2ME (cont.) • Graphics – drawImage – drawString – drawRect – drawRoundRect – drawLine – drawArc – fillRect – fillRoundRect – fillArc  setColor  setStrokeStyle  …
  • 5. Programación en J2ME (cont.) • Game Loop – Leer Input del usuario – Simular el mundo (IA, colisiones, etc.) – Dibujar el resultado – Esperar para completar el tiempo del frame • Hasta ahora, todo lo visto se puede implementar en MIDP1.0
  • 6. Programación en J2ME (cont.) • Game API – javax.microedition.lcdui.game.* • GameCanvas • Layer • LayerManager • Sprite • TiledLayer – Sólo disponible desde MIDP2.0
  • 7. Programación en J2ME (cont.) • GameCanvas – Extiende a Canvas – Agrega un buffer fuera de pantalla – Permite hacer polling a las teclas – El método getGraphics() retorna el buffer – Al finalizar de pintar el frame fuera de la pantalla, se llama a flushGraphics() – setFullScreenMode(Boolean)
  • 8. Programación en J2ME (cont.) • GameCanvas – int getKeyStates() • UP_PRESSED • DOWN_PRESSED • LEFT_PRESSED • RIGHT_PRESSED • FIRE_PRESSED – Cómo usarlo? • keyStates=getKeyStates(); • If(keyStates & LEFT_PRESSED != 0) – Usuario presionó izquierda…
  • 9. Programación en J2ME (cont.) • Layer – Base para Sprite y TiledLayer – void setPosition(int x, int y) – void setVisible(int x, int y) – boolean isVisible() – void move(int dx, int dy) – int getHeight() – int getWidth() – int getX() – int getY()
  • 10. Programación en J2ME (cont.) • Sprite – Extiende Layer agregando animación, detección de colisión, transformaciones de imagen – Sprite(Image imagen) – Sprite(Image imagen, int frameWidth, int frame Height) – Sprite(Sprite s) – collidesWith(Image imagen, int x, int y, bool pixelLevel) – collidesWith(Sprite s, bool pixelLevel) – collidesWith(TiledLayer t, bool pixelLevel) – defineCollisionRectangle(int x, int y, int width, int height)
  • 11. Programación en J2ME (cont.) • Animación del Sprite – void setFrameSequence(int[] sequence) • Establece una secuencia a partir de los frames de la imagen original del sprite – int getFrameSequenceLength() • Retorna el número de frames que tiene la secuencia actual – int getRawFramesCount() • Retorna el número de frames que tiene la imagen original del sprite
  • 12. Programación en J2ME (cont.) • Animación del Sprite – void setFrame(int sequenceIndex) • Selecciona un frame en particular de la secuencia para el próximo paint del sprite – void nextFrame() • Selecciona el siguiente frame en la secuencia – void prevFrame() • Selecciona el frame anterior en la secuencia – int getFrame() • Retorna el número de frame dentro de la secuencia que está selecconado actualmente – void paint(Graphics g) • Pinta el Sprite. El pixel de referencia es el de arriba a la izquierda
  • 13. Programación en J2ME (cont.) • Transformaciones del Sprite – defineReferencePixel(getWidth()/2, getHeight()/2) – setTransform(transformación) • TRANS_NONE • TRANS_ROT90 • TRANS_ROT180 • TRANS_ROT270 • TRANS_MIRROR • TRANS_MIRROR_ROT90 • TRANS_MIRROR_ROT180 • TRANS_MIRROR_ROT270
  • 14. Programación en J2ME (cont.) • TiledLayer – TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight) • Especifica las columnas y filas del fondo, imagen donde estás los tiles y sus dimensiones – Void setCell(int col, int row, int tileIndex) • Pinta en (col, row) con el tile tileIndex (parte de 1, el 0 es transparente) – Void fillCells(int col, int row, int numCols, int numRows, int tileIndex) • setCell pero en un rectángulo
  • 15. Programación en J2ME (cont.) • LayerManager – Sirve para pintar grupos de Layers – Void append(Layer l) – Void insert(Layer l, int index) – Int getSize() – Void remove(Layer l) – Void setViewWindow(int x, int y, int width, int height) – Void paint(Graphics g, int x, int y) – Layer getLayerAt(int index)
  • 16. Programación en J2ME (cont.) • Esperar para completar el tiempo del frame – 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(); }