SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
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();
}

Mais conteúdo relacionado

Mais procurados (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)
 

Destaque (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
 

Semelhante a Semana 12 j2_me_api_bn_animacion

Renderización en java
Renderización en javaRenderización en java
Renderización en java
aleja0940
 

Semelhante 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(); }