publico

Páginas: 19 (4610 palabras) Publicado: 25 de octubre de 2013




PROGRAMACIÓN DEL API DE JUEGOS
OBJETIVOS



El API de juegos de MIDP 2.0 ofrece una serie de capacidades que no ofrecía MIDP 1.0 y que simplifican enormemente la creación de juegos 2D. Una de sus principales y más ventajosas características es que es enormemente compacto ya que, a pesar de ser una herramienta muy robusta y potente, tan solo consta de cinco nuevas clasesque podemos encontrar en javax.microedition.lcdui.game. Estas cinco clases extienden las capacidades gráficas de MIDP de modo que se convierten en una herramienta fundamental para el programador de juegos.
El objetivo de este tutorial es familiarizar al lector con estas nuevas clases y con la funcionalidad que ofrecen. Como primer paso para conseguirlo introducimos en este punto cuál es elconcepto fundamental que introduce el API de juegos: la pantalla puede estar descompuesta en distintas capas o estratos (layers) de tal forma que podemos tratar cada una de ellas como una entidad independiente. Conociendo a fondo las clases que se exponen a continuación podremos comprender esta nueva filosofía y ponerla en práctica.



GameCanvas


GameCanvas es una subclase de Canvas queofrece, además de las heredadas de Canvas, nuevas capacidades específicas para la programación de juegos en J2ME. Por ejemplo, ofrece la posibilidad de crear animaciones rápidas y libres de parpadeo o la posibilidad de examinar el estado de las teclas del dispositivo.
Antes de conocer con más detalle qué nos ofrece la clase GameCanvas veamos como era la tarea de programar un juego con animacionesen MIDP 1.0, es decir, utilizando la clase Canvas. A lo más que podríamos llegar es a una solución que presentase el siguiente esquema:
public class JuegoCanvas extends Canvas implements Runnable {

public void run(){
while (true) {
// Actualizar el estado del juego
repaint();
// Esperar
}
}

public void paint(Graphics g) {
// Pintar imagenes
}protected void keyPressed(int keyCode) {

// Codigo de respuesta a la
// pulsacion de una tecla
}

}
La solución es cuando menos poco eficiente y difícilmente obtendremos el resultado deseado. El método run(), ejecutado por un hilo, actualiza el estado del juego. Además, al llamar al método repaint() el sistema llamará al método paint() con lo que se ejecutará otro hiloencargado de pintar las imágenes correspondientes en la pantalla. Por otro lado, cuando se produzca la pulsación de alguna tecla, el sistema llamará a keyPressed() y lo hará utilizando otro hilo independiente de los dos anteriores.
Por tanto, tenemos tres hilos diferentes y no habrá manera de que uno de ellos conozca que está ocurriendo con los otros dos en otras partes de la aplicación, con lo que elresultado puede ser una animación defectuosa. Además, si el tiempo que necesita la pantalla para refrescarse es mayor que el tiempo entre llamadas al método repaint(), el resultado será completamente inaceptable para el jugador.

GameCanvas ofrece la posibilidad de implementar un juego completo, incluyendo toda su funcionalidad, con un simple bucle controlado por un único hilo. Esto es así yaque permite que los procesos de pintado y gestión de eventos de teclado tengan un nivel de transparencia mayor para el programador. Los mecanismos mediante los cuales GameCanvas nos permite abstraernos en cierta medida de estas tareas son:
• La posibilidad de acceder directamente al objeto Graphics y de disponer de un buffer específico en el que se podrán representar y tratar las imágenes antesde mostrarlas en la pantalla del dispositivo.
• La técnica de "polling" (encuesta). Permite acceder directamente al estado de las teclas del dispositivo.
OFF-SCREEN BUFFER
Para poder entender los métodos de la clase GameCanvas debemos introducir primero el concepto de off-screen buffer. Es una representación de la pantalla que no es visible sino que está almacenada en memoria. A cada...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Publicidad
  • Publicidad
  • Publicidad
  • Publicidad
  • Publicidad
  • Publicidad
  • Publica
  • Publico

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS