Anuncios

Bienvenidos sean a este post, hoy veremos como por medio de esta clase todos los objetos se convierten al budismo, eh? no, a GameObjeto 😅

Anuncios

Para comenzar con este tema vamos a crear una nueva clase con los siguientes parametros:

  • Nombre: GameObjeto
  • Tipo: Class
Anuncios

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;
    }
}
Anuncios

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:

Anuncios
  • 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.
Anuncios

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;
    }
Anuncios
Anuncios

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
Anuncios

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;
    }
}
Anuncios

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.

Anuncios

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