Anuncios

Bienvenidos sean a este post, hasta el post anterior hemos creado los componentes y la fabrica, ahora nos falta el lugar donde va a estar trabajando que no es otra cosa que el nivel.

Anuncios

Como dijimos en esta clase diseñaremos el nivel, este va a ser el lugar donde podemos agregar o quitar enemigos, variar la velocidad del laser o nuestra nave, etc, para ese caso deberemos crear instancias de esta clase a traves del extends Nivel pero como hoy no sera el caso no lo haremos.

Anuncios

Comencemos creando una nueva clase con los siguientes parametros:

  • Nombre: Nivel
  • Tipo: Class
Anuncios

Reemplacemos el codigo generado automaticamente con el siguiente:

package org.example.invasores;

import android.content.Context;
import android.graphics.PointF;

import java.security.PublicKey;
import java.util.ArrayList;

class Nivel {
    public static final int INDICE_FONDO = 0;
    public static final int INDICE_JUGADOR = 1;
    public static final int PRIMER_LASER_JUGADOR = 2;
    public static final int ULTIMO_LASER_JUGADOR = 4;
    public static int mProximoLaserJugador;
    public static final int PRIMER_ALIEN = 5;
    public static final int SEGUNDO_ALIEN = 6;
    public static final int TERCER_ALIEN = 7;
    public static final int CUARTO_ALIEN = 8;
    public static final int QUINTO_ALIEN = 9;
    public static final int SEXTO_ALIEN = 10;
    public static final int ULTIMO_ALIEN = 10;
    public static final int PRIMER_LASER_ALIEN = 11;
    public static final int ULTIMO_LASER_ALIEN = 15;
    public static int mProximoLaserAlien;

    private ArrayList<GameObjeto> objetos;

    public Nivel(Context contexto,
                 PointF mTamanoPantalla,
                 GameEngine ge){
        objetos = new ArrayList<>();
        GameObjetoFabrica fabrica = new GameObjetoFabrica(
                contexto,mTamanoPantalla,ge);
        construirGameObjetos(fabrica);
    }
}
Anuncios

En este caso primero crearemos una serie de constantes que nos serviran para identificar a cada uno de los objetos que tendremos en el nivel, salvo dos variables, observen que las variables son estaticas y constantes, esto nos permitira hacer un seguimiento en todas las clases, por ser estatica, y su identificacion no variara porque son constantes, en este caso las variables/constantes seran para:

Anuncios
  • INDICE_FONDO, identifica al fondo
  • INDICE_JUGADOR, identifica al jugador
  • PRIMER_LASER_JUGADOR, identifica al primer laser
  • ULTIMO_LASER_JUGADOR, identifica al ultimo laser
  • mProximoLaserJugador, se encargara del o los lasers en medio de los anteriores
  • PRIMER_ALIEN, identifica al primer alien
  • SEGUNDO_ALIEN, identifica al segundo alien
  • TERCER_ALIEN, identifica al tercer alien
  • CUARTO_ALIEN, identifica al cuarto alien
  • QUINTO_ALIEN, identifica al quinto alien
  • SEXTO_ALIEN, identifica al sexto alien
  • ULTIMO_ALIEN, debera igual al sexto alien para nuestro ejemplo
  • PRIMER_LASER_ALIEN, identifica al primer laser alien
  • ULTIMO_LASER_ALIEN, identifica al ultimo laser alien
  • mProximoLaserAlien, identifica a los lasers entre el primero y el ultimo
  • objetos, sera el array que almacene a todos los objetos
Anuncios
Anuncios

Lo siguiente es el constructor de la clase donde recibiremos tres atributos (contexto, tamaño de la pantalla y un GameEngine), despues definiremos a nuestro ArrayList, es decir establecer el espacio en memoria creando el objeto, despues crearemos un objeto de la clase GameObjetoFabrica al cual le pasaremos los atributos anteriores y por ultimo llamamos a un metodo al cual le pasaremos la fabrica recien definida, nuestro siguiente paso sera agregar a esta funcion:

    ArrayList<GameObjeto> construirGameObjetos(
            GameObjetoFabrica fabrica){
        objetos.clear();
        objetos.add(INDICE_FONDO,
                fabrica.crear(new FondoEspec()));
        objetos.add(INDICE_JUGADOR,
                fabrica.crear(new JugadorEspec()));
        for (int i = PRIMER_LASER_JUGADOR;
             i != ULTIMO_LASER_JUGADOR + 1; i++){
            objetos.add(i,
                    fabrica.crear(new JugadorLaserEspec()));
        }
        mProximoLaserJugador = PRIMER_LASER_JUGADOR;
        return objetos;
    }
Anuncios
Anuncios

Lo primero que haremos sera limpiar el contenido en objetos, luego por medio de add agregaremos el fondo, la constante de indice que asignamos la usaremos para indicar en cual posicion del ArrayList estara, luego usaremos al metodo crear de fabrica y como atributo enviaremos al objeto FondoEspec, en el siguiente hacemos exactamente lo mismo pero con las especificaciones del jugador (JugadorEspec), despues haremos algo similar con el laser pero usaremos un bucle for para agregar los mismos pero usaremos a las constantes para delimitar al bucle y el indice de objetos sera el valor del indicador del bucle pero trabaja de la misma forma, por ultimo asignamos a mProximoLaserJugador el valor de PRIMER_LASER_JUGADOR para saber de donde empezar y por ultimo devolvemos al objetos creado, pasemos a agregar el ultimo metodo:

    ArrayList<GameObjeto> getObjetos(){
        return objetos;
    }
Anuncios

Con este metodo solo devolveremos a objetos, y con esto ya tenemos concluido nuestro nivel pero todavia nos falta un paso mas para probarlo dado que solamente estamos creando los objetos y los almacenamos en un solo lugar.

Anuncios

En resumen, hoy hemos creado el nivel de nuestro juego, hemos visto como podemos identificar a cada uno de sus objetos, como se utiliza a la fabrica vista en el post anterior, tambien vimos como pudimos agregar estos objetos en el Array y como recuperarlos, en el proximo post veremos como se mezcla todo, 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