Bienvenidos sean a este post, en los posts anteriores hicimos las clases para las especificaciones y los componentes que llamaran los objetos, en el de hoy crearemos las interfaces para crear las clases de los componentes de los objetos.
En este caso vamos a necesitar solamente dos interfaces, una para los graficos y otra para actualizarla porque si bien tendremos elementos que se muevan en la pantalla, estos son muy distintos a los vistos en el proyecto anterior por ende vamos a comenzar con la primera clase:
- Nombre: ComponenteGraficos
- Tipo: Interface
En este caso la interfaz no estara dentro del paquete que creamos anteriormente sino en nuestro programa raiz, por decirlo de una manera, una generada la clase/interfaz vamos a reemplazar el codigo generado con el siguiente:
package org.example.pepeaventura;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PointF;
import org.example.pepeaventura.especoj.EspecJuegoObjeto;
interface ComponenteGraficos {
void inicializar(Context c,
EspecJuegoObjeto espec,
PointF tamanoObjeto,
int pixelPorMetro);
void dibujar(Canvas canvas, Paint pincel,
Transformar t, Camara cam);
}
En este caso vamos a tener dos funciones, la primera sera para inicializar nuestros objetos, si observan entre los argumentos del primer metodo tenemos uno de tipo EspecJuegoObjeto mientras lo escriban se los va a sugerir para agregar y les agregara la siguiente linea:
import org.example.pepeaventura.especoj.EspecJuegoObjeto;
Esto confirma que oficialmente agregamos nuestro primer paquete propio 🥳, despues el resto son parametros ya vistos como son el contexto, el tamaño del mismo y uno nuevo que es pixelPorMetro pero esto lo usaremos cuando estemos con la camara pero este es un tema que veremos mas adelante, el siguiente metodo es el encargado de dibujar al objeto donde tendremos tres argumentos conocidos, el Canvas para crear el receptaculo, el Paint para dibujarlo, el Transformar para ajustar a nuestras necesidades y Camara que servira para ajustar la parte que veremos de nuestro nivel, de esto como dije anteriormente hablaremos mas adelante, estas dos ultimas clases quedaran con error pero no se preocupen porque mas adelante las crearemos, con esto terminamos la primera interfaz pasemos a crear la siguiente:
- Nombre: ComponenteActualizar
- Tipo: Interface
Una vez creada la interfaz vamos a reemplazar el codigo generado por el siguiente:
package org.example.pepeaventura;
interface ComponenteActualizar {
void actualizar(long fps,
Transformar t,
Transformar jugadorTransformar);
}
Este metodo trabajara de forma similar al proyecto anterior donde tendremos a los fps de nuestro juego, el transformar de los objetos/enemigos y el transformar del jugador, esta clase esta en cada uno de los objetos que tendremos en el nivel pero a diferencia del proyecto anterior no necesitaremos una clase para controlar el movimiento de cada objeto porque la mayoria no se mueve y esto nos permite tener todo bajo un solo nombre llamado actualizar, la cual se llamara en cada frame del juego, por otro lado podriamos haber evitado el argumento del jugador pero en realidad lo necesitaremos para la clase Camara donde necesitamos saber en que parte del nivel esta el jugador y por si el dia de mañana agregamos enemigos en la misma, con esto tenemos dos de nuestras interfaces que seran usadas por todos los objetos, por los errores no se preocupen porque mas adelante los solucionaremos.
En resumen, hoy hemos creado las dos interfaces que despues nos permitiran implementar todas las acciones de nuestros objetos, son los que nos permitiran no solamente graficarlos sino tambien actualizarlos y moverlos o animarlos segun sea necesario, espero les haya gustado sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.


Donación
Es para mantenimento del sitio, gracias!
$1.00
