Bienvenidos sean a este post, hoy veremos como por medio de esta clase todos los objetos se convierten al budismo, eh? no, a GameObjeto 😅
Para comenzar con este tema vamos a crear una nueva clase con los siguientes parametros:
- Nombre: GameObjeto
- Tipo: Class
Reemplacemos el codigo creado con el siguiente:
package org.example.invasores;
import android.content.Context;
import android.graphics.PointF;
class GameObjeto {
private Transformar mTransformar;
private boolean estaActivo = false;
private String mTag;
private ComponenteGraficos componenteGraficos;
private ComponenteMovimiento componenteMovimiento;
private ComponenteGenerar componenteGenerar;
void setGenerador(ComponenteGenerar g){
componenteGenerar = g;
}
void setGraficos(ComponenteGraficos g, Context c,
ObjetoEspec espec, PointF tamanoObjeto){
componenteGraficos = g;
g.inicializar(c, espec, tamanoObjeto);
}
void setMovimiento(ComponenteMovimiento m){
componenteMovimiento = m;
}
void setEntrada(ComponenteEntrada e){
e.setTransformar(mTransformar);
}
void setTag(String tag){
mTag = tag;
}
void setTransformar(Transformar t){
mTransformar = t;
}
}
Primero crearemos tres variables, la primera sera para manipular a nuestra clase Transformar, la segunda sera para indicar si esta activo el elemento y la tercera para el tag identificador, recuerden que cuando vimos este post entre los componentes estaba el identificador o tag, despues crearemos tres objetos de nuestras interfaces para los componentes que usaremos para poder instanciarlas, lo siguiente seran una serie de metodos getter and setter para los distintos valores, veamos a cada uno de ellos:
- setGenerador, sirve para iniciar a ComponenteGenerar con el objeto informado como atributo
- setGraficos, este no solo inicia a ComponenteGraficos sino tambien usa a inicializar con los atributos que recibe
- setMovimiento, sirve para iniciar a ComponenteMovimiento con el objeto informado como atributo
- setEntrada, este es un poco diferente porque no inicia a la instancia sino que llama a setTransformar enviando el valor de mTransformar
- setTag, establece el valor de mTag por medio del valor recibido como atributo
- setTransformar, se encarga de establecer el valor de mTransformar.
En este caso, el unico metodo raro es setEntrada porque no inicia a la instancia de ComponenteEntrada, esto es debido a que el unico elemento que realmente lo utiliza es el jugador pero si queremos extenderlo, es decir que otro objeto sea controlado, lo podremos hacer sin grandes cambios y de esta forma siempre usaremos al Transformar correcto, esto implica que en realidad el ComponenteEntrada es mas un observador, por ultimo agregaremos a los siguientes metodos:
void dibujar(Canvas canvas, Paint pincel){
componenteGraficos.dibujar(canvas,pincel,mTransformar);
}
void actualizar(long fps, Transformar jugadorTransformar){
if (!(componenteMovimiento.mover(fps,mTransformar,
jugadorTransformar))){
estaActivo = false;
}
}
boolean generar(Transformar jugadorTransformar){
if (!estaActivo){
componenteGenerar.generar(jugadorTransformar,mTransformar);
estaActivo = true;
return true;
}
return false;
}
boolean chekaActivo(){
return estaActivo;
}
String getTag(){
return mTag;
}
void setInactivo(){
estaActivo = false;
}
Transformar getTransformar(){
return mTransformar;
}
El primer metodo usa a ComponenteGraficos para poder usar al metodo dibujar propio de esta instancia, el segundo metodo usa al ComponenteMovimiento para llamar a mover y por medio de un condicional donde verifica si mover esta en estado falso procede a setear como estaActivo en estado false, el siguiente metodo como los anteriores aprovecha a ComponenteGenerar para poder llamar a generar donde verifica si no esta activo y procede a llamar a este metodo, setea a estaActivo en true y devuelve un true, en caso de no cumplirse el condicional siempre devuelve false, despues tendremos otros cuatro metodos getter and setter, veamos los mismos:
- chekaActivo, devuelve el valor de estaActivo
- getTag, devuelve el valor de mTag
- setInactivo, establece el valor de estaActivo como false para indicar que no esta activo el elemento
- getTtransformar, devuelve el valor de mTransformar
Con todo esto ya tenemos los metodos para poder ir agregando los elementos y que trabajen como GameObjeto, antes de finalizar veamos el codigo como quedo hasta ahora:
GameObjeto.java
package org.example.invasores;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PointF;
class GameObjeto {
private Transformar mTransformar;
private boolean estaActivo = false;
private String mTag;
private ComponenteGraficos componenteGraficos;
private ComponenteMovimiento componenteMovimiento;
private ComponenteGenerar componenteGenerar;
void setGenerador(ComponenteGenerar g){
componenteGenerar = g;
}
void setGraficos(ComponenteGraficos g, Context c,
ObjetoEspec espec, PointF tamanoObjeto){
componenteGraficos = g;
g.inicializar(c, espec, tamanoObjeto);
}
void setMovimiento(ComponenteMovimiento m){
componenteMovimiento = m;
}
void setEntrada(ComponenteEntrada e){
e.setTransformar(mTransformar);
}
void setTag(String tag){
mTag = tag;
}
void setTransformar(Transformar t){
mTransformar = t;
}
void dibujar(Canvas canvas, Paint pincel){
componenteGraficos.dibujar(canvas,pincel,mTransformar);
}
void actualizar(long fps, Transformar jugadorTransformar){
if (!(componenteMovimiento.mover(fps,mTransformar,
jugadorTransformar))){
estaActivo = false;
}
}
boolean generar(Transformar jugadorTransformar){
if (!estaActivo){
componenteGenerar.generar(jugadorTransformar,mTransformar);
estaActivo = true;
return true;
}
return false;
}
boolean chekaActivo(){
return estaActivo;
}
String getTag(){
return mTag;
}
void setInactivo(){
estaActivo = false;
}
Transformar getTransformar(){
return mTransformar;
}
}
En resumen, hoy hemos visto a la clase GameObjeto, hemos agregado todas las variables, los objetos y metodos que necesitamos, hemos visto algunas particularidades, y como nos servira de base para nuestras siguientes modificaciones, 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.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.00