iic3686 creaci n de videojuegos n.
Download
Skip this Video
Download Presentation
IIC3686 - Creación de Videojuegos

Loading in 2 Seconds...

play fullscreen
1 / 26

IIC3686 - Creación de Videojuegos - PowerPoint PPT Presentation


  • 119 Views
  • Uploaded on

IIC3686 - Creación de Videojuegos. Programación de juegos en J2ME para celulares. Sebastián Montabone. Introducción. Java J2SE: Standard Edition J2EE: Enterprise Edition J2ME: Micro Edition Configuraciones Máquina virtual, interfaz de programación básica

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'IIC3686 - Creación de Videojuegos' - shirlyn


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
iic3686 creaci n de videojuegos

IIC3686 - Creación de Videojuegos

Programación de juegos en J2ME para celulares

Sebastián Montabone

introducci n
Introducción
  • Java
    • J2SE: Standard Edition
    • J2EE: Enterprise Edition
    • J2ME: Micro Edition
  • Configuraciones
    • Máquina virtual, interfaz de programación básica
      • Connected Limited Device Configuration (CLDC)
        • CLDC 1.1
        • CLDC 1.0
      • Connected Device Configuration (CDC)
introducci n cont
Introducción (cont.)
  • Perfiles
    • Interfaz de más alto nivel
      • Mobile Information Device Profile(MIDP) 1.0
      • Mobile Information Device Profile(MIDP) 2.0
      • Próximamente MIDP 3.0…
  • Cada celular implementa una configuración y un perfil
    • Esto define las posibilidades de programación que el desarrollador tiene disponible.
introducci n cont1
Introducción (cont.)
  • MIDP1.0
    • No tiene soporte para audio
    • No hay pintado de pantalla completa
    • No soporta transparencias
    • Conectividad sólo vía HTTP
    • Todos los celulares actuales soportan MIDP1.0
  • MIDP2.0
    • Soporte multimedia
    • Soporte para pintado a pantalla completa
    • Soporte para transparencias
    • Conectividad ampliada (HTTP, sockets, etc…)
    • Mejoras específicas para desarrollo de juegos
    • Sólo algunos celulares soportan MIDP2.0
programaci n en j2me
Programación en J2ME
  • Clases públicas
  • javax.microedition.midlet
    • startApp()
    • pauseApp()
    • destroyApp()
programaci n en j2me cont
Programación en J2ME (cont.)
  • Ciclo de vida de un MIDlet
    • Activo
      • El MIDlet está siendo ejecutado y tiene control sobre los recursos del sistema
    • Destruido
      • El MIDlet fue destruido por el AMS. Todos sus recursos han sido liberados.
    • Pausado
      • El MIDlet está corriendo en el fondo. No puede responder a ningún evento de la interfaz de usuario, pero puede ser devuelto a Activo por el AMS
programaci n en j2me cont1
Programación en J2ME (cont.)
  • javax.microedition.lcdui.Display
    • Display representa a la pantalla LCD del celular
  • Display.getDisplay(MIDlet m)
    • Obtiene el Display asociado al MIDlet
  • Display.setCurrent(Displayable d)
    • Setea el objeto que se quiere desplegar en la pantalla LCD
programaci n en j2me cont2
Programación en J2ME (cont.)
  • javax.microedition.lcdui.Displayable
    • Displayable representa un objeto que puede ser desplegado en la pantalla LCD
  • Displayable
    • Screen
      • Form
        • ChoiceGroup
        • DateField
        • ImageItem
        • Gauge
        • StringItem
        • TextField
      • Alert
      • List
      • TextBox
    • Canvas
programaci n en j2me cont3
Programación en J2ME (cont.)
  • Displayable.setCommandListener(CommandListener cl)
    • Especifica quién interpretará los comandos recibidos por el objeto Displayable
    • El intérprete debe implementar el método abstracto CommandListener
  • Displayable.addCommand(Command c)
    • Agrega un comando a la pantalla
  • Displayable.removeCommand(Command c)
    • Elimina un comando de la pantalla
programaci n en j2me cont4
Programación en J2ME (cont.)
  • 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 cont5
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 cont6
Programación en J2ME (cont.)
  • setColor
  • setStrokeStyle
  • Graphics
    • drawImage
    • drawString
    • drawRect
    • drawRoundRect
    • drawLine
    • drawArc
    • fillRect
    • fillRoundRect
    • fillArc
programaci n en j2me cont7
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 cont8
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 cont9
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 cont10
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 cont11
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 cont12
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 cont13
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 cont14
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 cont15
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 cont16
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 cont17
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 cont18
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();

}

links a sitios de desarrollo
Links a sitios de desarrollo
  • Nokiahttp://forum.nokia.com/
  • Siemens.http://www.siemens-mobile.com/developer
  • Sony Ericsson.http://developer.sonyericsson.com/
  • Motorola.http://www.motocoder.com/
instalaci n
Instalación
  • NetBeans 5.0 + J2SE v1.4.2.http://java.sun.com/j2se/1.4.2/download-netbeans-50.html
  • NetBeans Mobility Pack (incluye Wireless Toolkit 2.2).http://www.netbeans.org/products/mobility/

Extra:

  • Tabla comparativa de celulares con sus configuraciones, perfiles, y otros datos.http://developers.sun.com/techtopics/mobility/device/device