jueves, 20 de diciembre de 2007

Diego Rivera

Este es otro de los íconos de la pintura mundial. Aca les dejo dos pinturas excelentes del pintor.



La clase game

Hoy vamos a ver un poco el tema de la clase Game que dejamos abierta en la publicación pasada.
Esta clase es la más importante de todas porque se ocupa de orquestar los distintos componentes del juego de manera tal que trabajen en sintonia.

Veamos un poco de código...

import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import java.io.*;
import java.util.*;
import javax.microedition.lcdui.game.*;

class Game extends Canvas implements Runnable
{

public Game()
{
}

static long FPS=14;

public void run()
{
setState(Estados.Load);
setFullScreenMode(true);
while (true)
{
try
{
long FPS_Timer = System.currentTimeMillis();
Update();
draw();
repaint();
serviceRepaints();
GameTimer++;
while ((System.currentTimeMillis()-FPS_Timer)<1000/FPS)
Thread.sleep(1);
}
catch (InterruptedException e)
{
//System.out.println(e.toString());
}
catch (Exception e)
{
//e.printStackTrace();
//System.out.println(e.toString());
}
}
}

public void hideNotify ()
{ }

public void showNotify()
{ }

}

Como ya hemos dicho la clase game hereda de Canvas una clase muy importante para los midlets. pueden encontrar mucha info de ella en la red. Lo que no habíamos dicho era que implementa la interfaz Runnable
Esta interfaz lo que permite es correr la clase game en un nuevo hilo. Esencial para hacer el game loop.

Cuando se implementa esta interfaz se debe agregar un método run a la clase. Este método se ejecutará cuando se dispare el hilo.

En este método setearemos el estado incial y que se utilice la pantalla completa de celular.
además crearemos un while para crear el game loop.

Aquí llamaremos a varios métodos muy importantes para nuestro juego (update, draw, etc que aún no están implementados y sirven para actualizar estados y dibujar la animación) y calcularemos los cuadros por segundo. Repaint y serviceRepaints son métodos de canvas que sirven para pintar en la pantalla.

Bueno... ya tenemos lo básico. la estructura. Aunque todavia no hace ni pinta nada ya hemos comenzado...

miércoles, 19 de diciembre de 2007

Video juegos para móviles!!

Hace un tiempo que he incursionado en el área de los video juegos para móviles.
Estuve desarrollando un juego de aventura muy simple al mejor estilo Super Mario Bros.

Como saben (o no) los móviles usan j2me. Una versión reducida de java. hay mucha info al repsecto en la red.

Hoy voy a empezar dandoles la estructura básica de un midlet de un juego:
(si no entienden a priori no importa ya lo vamos a ir explicando...)


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class gfx extends MIDlet
{
private Display display;
static Game game;
static gfx _instance;

public gfx()
{
display=Display.getDisplay(this);
_instance=this;
game=new Game();
new Thread(game).start();
}

public void startApp() throws MIDletStateChangeException
{
display.setCurrent(game);
}

public void pauseApp()
{}
public void destroyApp(boolean unconditional)
{}

}

Como verán lo primero que hago es heredar mi clase de midlet... muy importante. Sino no es un midlet.
Creo un display para mostrar el juego en pantalla, un Game que hereda de Canvas y que lo vamos a ver más a delante.
En el contructor creo las instancias de los distintos objetos y lanzó un hilo que ejecuta Game.
En el método startApp() le digo a display que canvas dibujar y como Game hereda de canvas le paso esa instancia.

Es mul sencillo. Ahora el tema de como implementar la clase Game es bastante más complejo. lo iremos viendo en varias entragas más.

Estoy de vuelta

Hola!

Hace un tiempo que no he tenido tiempo de crear nuevas entradas. En adelante trateré de hacerlo más seguido. :)