Sei sulla pagina 1di 48

Desarrollo de Aplicaciones Para Celulares en Java

Msolutions - Parmenion

ndice

Parte I reas de Desarrollo Parte II Software Utilizado Parte III Particularidades de J2ME Parte IV Algunos Ejemplos

Parte I

reas de Desarrollo

reas de Desarrollo

Diseo Conceptual Elementos Grficos Programacin J2ME Herramientas de Apoyo Sistemas de Compatibilidades

Diseo Conceptual

Mecnicas de juego y su viabilidad. Delimitar las features que se van a implementar, y como afectarn al Diseo de niveles, jugabilidad, ajuste de dificultad. Todo el desarrollo del producto va supeditado a este punto, por lo Requiere de creatividad, y de haber jugado mucho y a muchos juegos.

tiempo de desarrollo.

que tambin requiere de amplios conocimientos tcnicos y artsticos.

Elementos Grficos

Diseo de personajes, escenarios, marcadores, tipografas, etc... Creacin de grficos desde cero, animaciones fotograma a fotograma. Reescalados. Aspectos tcnicos supeditados a la programacin. Diseo grfico e ilustracin, creacin de material promocional.

Programacin J2ME

Programacin pura y dura. Conocer el cdigo de lo que ya hay hecho, poder adaptarlo a nuevos Buscar soluciones a problemas concretos que van surgiendo. Eficacia en el cdigo, optimizar, encontrar atajos Combinar programacin orientada a objetos con otros sistemas menos

desarrollos.

convencionales.

Herramientas de Apoyo

Desarrollo de herramientas necesarias para crear el juego Programacin tradicional, fuera del entorno J2ME Desarrollo de Editores de Niveles Desarrollo de Editores de Animaciones Otras utilidades

Sistemas de Compatibilidades

Desarrollo y mantenimiento del sistema de compatibilidades. Programacin JSEE. Estudio de usabilidad de aplicaciones y flujo de trabajo ptimo. Adaptacin formatos de distintos operadores. Analizar nuevos terminales y sus posibilidades, donde ubicarlos. Mantenimiento peridico de las BBDD de juegos.

Parte II

Software Utilizado

Software Utilizado
Diseo Conceptual
Gantt, OpenOffice, Thunderbird + Lighting

Elementos Grficos
Gimp

Programacin J2ME Herramientas de Apoyo Sistemas de Compatibilidades


Eclipse, Ant, Antenna

Diseo Conceptual

Gantt Project

Jerarquas y dependencias de tareas Diagramas de Gantt Diagramas de PERT Importacin/Exportacin de MS Project

http://ganttproject.biz/

Gantt Project

Diseo Conceptual
OpenOffice

Sustitucin del paquete De sobra conocido....

Microsoft Office

http://www.openoffice.org/

Diseo Conceptual
Lightning

Extensin para Thunderbird Funcionalidades similares al organizador de

Outlook

Calendarios compartidos Sincronizacin con Google Calendar

http://www.mozilla.org/projects/calendar/lightning/

Lightning

Elementos Grficos

Gimp

Sustituto de Adobe Photoshop Funcionalidades bastante potentes Soporte para tabletas grficas y Wacoms

http://www.gimp.org/

Programacin
Eclipse SDK

Ampliamente difundido Fcil desarrollo de plug-ins Soporta Ant

http://www.eclipse.org/

Programacin

Apache Ant

Alta customizacin de nuestros proyectos Muy flexible Mltiples compilaciones muy rpidas

http://ant.apache.org/

Programacin
Antenna

Extensin Ant para J2ME Nuevas Tareas y Propiedades Independiente del SDK o libreras Empaqueta JAR, ofusca, preverifica

especficas e imprescindibles

http://antenna.sourceforge.net/

Sistema de Compatibilidades

Mltiples compilaciones a partir de un source comn Adaptacin a distintos tamaos de pantalla Adaptacin a libreras de cada fabricante Tabla de compatibilidades Terminal Versin

Sistema de Compatibilidades

Parte III

Particularidades de J2ME

Particularidades de J2ME

Problemas

Reducido tamao de JAR Poca cantidad de HEAP (memoria de ejecucin) Cientos de terminales

Distintas APIs y libreras para cada fabricante Grandes variaciones en velocidad de ejecucin Diferentes e incompatibles JVMs Distintos tamaos de pantalla

Particularidades de J2ME

Soluciones

Programacin procedural nico THREAD para toda la aplicacin Uso de elementos estticos para un acceso rpido Preproceso

Clases personalizadas intercambiables Grficos de distintos tamaos intercambiables

Estructura de aplicacin

Estructura de aplicacin

Pmidlet.java Clase midlet principal (nica) Instancia las clases auxiliares Admite preproceso Preview.java Primera clase en ser instanciada Gestiona la precarga bsica de la aplicacin Implementa un Canvas bsico

Estructura de aplicacin
Dyc.java Gestiona y almacena datos binarios Almacena todos los textos Settings.java (esttica) Crea, escribe y lee en el registro Conversin de cualquier tipo de dato a byte Efectos.java (esttica) Precarga los archivos de sonido Gestiona su reproduccin

Estructura de aplicacin
Screen.java Implementa el nico Canvas de toda la aplicacin Gestiona pulsaciones de teclas y eventos de entrada Gestiona repintados Contiene utilidades para trabajar con texto Reloj.java Implementa el nico THREAD de la aplicacin Sirve de apoyo a Screen.java para pedir repintados o repeticiones de tecla Contiene utilidades para medir el tiempo

Estructura de aplicacin

Menu.java Implementa el menu y submenus iniciales Pantalla.java Gestiona el flujo del propio juego Inicio y fin de nivel Muerte del jugador Implementa marcadores, mens de apoyo Gestiona la precarga del propio juego

Estructura de aplicacin

Mclip.java Gestiona la carga y divisin de imgenes Gestiona mtodo de volcado de imgenes Implementa utilidades como reescalado o tintado Tscreen.java Gestiona los terminales con pantalla tctil Implementa control de zonas pulsables y su accin correspondiente

Conceptos bsicos procedurales

No existen Getters / Setters Variables pblicas No existe herencia Minimizacin de multiplicacin y divisin Desplazamiento de bit Inline de mtodos Variables estticas donde se requiera velocidad de acceso Arrays en paralelo

Conceptos bsicos procedurales

Programacin tradicional OO Disparo de una bala Clase Bala.java con sus propiedades Posicion x, y, velocidades, rea de colisin, etc... Instancia de esa clase por cada bala disparada Gestin de cada bala en juego por separado Eliminacin de la instancia al desaparecer la bala

Conceptos bsicos procedurales


Programacin procedural Disparo de una bala Clase Bala.java con arrays de propiedades en paralelo Posicion x[ ], y[ ], velocidades[ ], rea de colisin[ ], etc... Buffer de balas (TOTAL_BALAS) como longitud de todos los arrays mximo de balas disponibles Instancia nica de esa clase para todas las balas Gestin de cada bala sucesivamente, recorriendo los arrays El ndice es quien identifica a cada bala en particular Reaprovechamiento del ndice al desaparecer la bala

Ejemplo de cdigo
Final static int TOTAL_BALAS = 50; Private boolean activa[] = new int[TOTAL_BALAS]; Private int pos_x[] = new int[TOTAL_BALAS]; Private int vel_x[] = new int[TOTAL_BALAS]; /*********************/ Private void mueveBalas(){ for(int f=0;f<TOTAL_BALAS;f++){ //solo gestionamos las balas necesarias If (activa[f]){ pos_x[f] += vel_x[f]; //si existe colisin, su index queda libre para reusar If (colision(f)) activa[f] = false; } } }

Distintos Tamaos de Pantalla

240 x 320 px

176 x 208 px

128 x 160 px

Necesidad de trabajar con medidas relativas a getGameWidth() y getGameHeight()

Elementos Grficos Reescalados


20 x 20 pxels

16 x 16 pxels

10 x 10 pxels

Parte IV

Algunos Ejemplos

Tora Tora

Aquiles vs. Troya

Mortadelo y Filemn

Dscent

World Tournament Football

Supersonix

Super Mind Trainer 2

Tragacocos 4

Pau Gasol 2008

StarBugs

Potrebbero piacerti anche