Está en la página 1de 7

1. Aadimos extends Applet depues de StartingClass.

De esta manera podemos compartir mtodos de una superclase, en este cado la clase Applet heredndola. 2. Importaremos dicha clase Applet. 3. Aadiremos los mtodos: init(), start(), stop(), destroy(). Estos mtodos son parte de la superclase Applet, e importndola obtenemos la capacidad de usarlos.

Los cuatro mtodos son frameworks para la ejecucin dados por la clase Applet. En el ciclo d vida de este Applet, la amyor parte de los eventos llamaran a uno de estos mtodos y lo ejecutaran. El @Override quiere decir que estamos sobrescribiendo cada mtodo de la clase padre Applet. Adems nos informar si hay errores en la compilacin.

Mientrs el jugador est vivo: Actualizaremos su posicin, dibujaremos el personaje en la nueva posicin, la que acabamos de actualizar, y aplicaremos gravedad. Esto es un ejemplo simplificado de un game loop.

IMPLIMENTANDO UN THREAD
Los threads son una manera de de correr procesos simultneamente. Aadiremos un thread a nuestra tarea de la siguiente manera:

La primera lnea creauna nueva copia (instancia) de un thread, un objeto Thread llamado thread, y la segunda lnea comienza este thread. Hasta aqu si llamamos al mtodo thread.start() no ocurre nada, Porqu? Los threads requieren un mtodo run que determine que ocurrir en ese thread. Pero hasta ahora no hemos declarado un mtodo run. Hay una razn para esto. Extraeremos el mtodo run del thread y creando un mtodo separado en la clase haciendo lo siguiente. 1. Implementamos la interfaz Runnable aadiendo implements Runnable. 2. Crear un mtodo run() en la clase. Cuando implementamos el interface, podemos extraer el mtodo run de el Thread que hemos creado. Para conectar este recin creado mtodo run() y el thread que hemos creado antes aadimos el this en el thread antes creado.

CREANDO EL GAME LOOP INFINITO


El game loop es el latido del juego. Este loop constantemente busca cambios y haces actualizaciones conforme a estos cambios. Este sencillo loop har lo siguiente: 1. 2. 3. 4. Actualizar personajes Actualizar entorno Repintar la escena Dormir durante 17 ms (60 actualizaciones por segundo = 60 fps)

Lo primero que haremos ser crear un bucle en el mtodo run() de la clase: 1. Este loop ser un while y se ejecutar indefinidamente. El mtodo run quedar de la siguiente manera:

repaint() llamar al mtodo paint, en el cul dibujamos objetos en la pantalla y ser llamado cada 17 ms. 1. En el try intentamos hacer algo, en este caso sleep. 2. Si algo va mal el catch guardar la informacin y la imprimir en una consola.

DEFINIENDO TAMAO, FONDO Y TTULO


Discutiremos ahora el mtodo init(). Cuando el applet corre por primera vez, ejecutar el mtodo init() (muy parecido a como un programa tpico corre el mtodo main(String args[]). Dentro de este mtodo definimos ciertos parmetros para el applet incluyendo: 1. Tamao del applet. 2. Color del fondo. 3. Ttulo del applet. Dentro de este mtodo aadiremos: setSize(800,480); para cambiar el tamao a 800 pixeles por 480 pixeles (la resolucin de android mas comn. setBackground(Color.black) establece el fondo con el color negro.

setFocusable(true) esta sentencia asegura que cuando el juego comienza, el applet toma el foco y todos los inputs van directamente al applet. Frame frame = (Frame) this.getParent().getParent(); Frame.setTitle(Q-Bot Alpha); La primera lnea asigna la ventana applet a la variable frame, la segunda lnea solo establece el ttulo a Q-Bot Alpha.

IMPLEMENTANDO KEYLISTENER
Ahora aadiremos cdigo que permitir a nuestro juegoresponder a las acciones del usuario en el teclado. As es como lo haremos: 1. Para que nuestro juego escuche pulsaciones y liberaciones de las teclas le tenemos que dar un listener. 2. Para conseguir lo anterior necesitamos implementar el interfaz KeyListener, y entonces aadir el KeyListener en nuestro mtodo init(). 3. Implementar un interfaz requiere que se tome cada mtodo definido en la superclase KeyListener y aadirlo a nuestro cdigo. Estos tres mtodos son: KeyPressed(), KeyReleased(), y KeyTyped(). Por tanto empecemos a implementar el KeyListener. 1. Vayamos a StartingClass.java y examinemos la declaracin de nuestra clase. Puesto que ahora adems de implementar la interfaz Runnable queremos implementar la KeyListener: public class StartingClass extends Applet implements Runnable, KeyListener{ falta aadir el KeyListener al applet introducindolo en el mtodo init: addKeyListener(this)

CREANDO EL PERSONAJE PRINCIPAL


Ahora que tenemos creado el framework bsico establecido, aadiremos nuestro personaje principal. Para hacer esto crearemos una nueva clase. Dentro de esta clase haremos lo siguiente: 1. Gestiona las coordenadas x, y y la velocidad. 2. Hace actualizaciones sobre la velocidad y la posicin. 3. Permite a otras clases recuperar sus variables relacionadas x e y. Por lo tanto, los mtodos de estas clases estn divididos en las siguientes categoras:

1. Metodos constantemente actualizados que son llamados en cada iteracin del loop. 2. Metodos que solo son llamados sobre un input del jugador. 3. Metodos auxiliares que recuperan y cambian el valor de las variables de la clase. Comenzaremos creando una clase nueva llamada Robot.java en el package: Las variables son:

1. centerX, centerY son las coordenadas X e Y del centro de nuestro robot. 2. speedX, speedY son la tasa de cambio de las posiciones X e Y. 3. jumped cambia a verdadero si el personaje esta en el aire, y cambia a falso cuando est en el suelo.

Entre los mtodos que son constantemente llamados estn: update() : este mtodo ser llamado en cada iteracin del loop. Este es un mtodo importante. Debemos tener esto en mente:

1. La velocidad puede ser negativa, lo cual significa que un personaje con velocidad negativa speedX se mover a la izquierda. 2. El pixel origen (0,0) esta en la parte superior izquierda. Lo cual significa que si el personaje tiene velocidad positiva speedY estar cayendo, no ascendiendo. 3. Estamos definiendo arbitrariamente el suelo alrededor del pixel 440. Esto significa que si el centro del personaje esta en el pixel 382 sus pies tocaran el suelo en el 440. 4. Si el centerX de el personaje es menos que 60 su mano izquierda estar fuera del lmite de la pantalla. DISECCIONANDO EL METODO update() Primero estudiaremos la siguiente seccin:

Para que nuestro juego dibuje al personaje en la localizacin apropiada, centerX debe ser constantemente actualizado; por tanto, si el personaje no se est moviendo (speedX == 0), entonces no hay necesidad de actualizar centerX aadiendo velocidad. En el Metal Slug, el personaje se mueve libremente en la mitad izquierda de la pantalla, pero una vez que se empieza a mover a la derecha, el personaje permanece en la misma posicin mientras el fondo se desplaza. Esto es lo que nosotros estamos haciendo aqu. Si la velocidad es cero, entonces no se desplazar el fondo. Si las coordenadas del personaje centerX es menor que 150, puede moverse libremente. De otro modo el fondo se mover y el personaje estar quieto. Ahora discutiremos el siguiente pedazo de cdigo:

Puesto que la gravedad siempre est presente, el personaje esta constantemente siendo empujado hacia el suelo. Asumimos que el suelo est localizado 440 pixeles por debajo del top, y si la posicin Y del personaje mas la velocidad en Y llevaran al personaje debajo del suelo, usaremos la sentencia centerY = 382 para establecer manualmente a la altura a la que el parar de moverse. La seccin Handles jumping examinar la velocidad y posicin actual para testear si el personaje est en mitad de un salto o en el suelo. Finalmente analizaremos la siguiente seccin:

Esta seccin solo comprueba si el personaje se esta moviendo mas hay del limite izquierdo de la pantalla y fija la coordinada del centerX en 61 si intenta moverse fuera de la pantalla. Ahora que hemos discutido el mtodo update() pasaremos a los otros mtodos:

También podría gustarte