Anuncios

Bienvenidos sean a este post, hasta el post anterior hemos creado todos los componentes para nuestros aliens pero todavia no los generamos, lo cual sera el tema de hoy.

Anuncios

En este caso vamos a modificar tres clases:

  • GameEngine
  • Nivel
  • GameObjetoFabrica
Anuncios

Para comenzar vamos a modificar a la clase GameEngine, para ello debemos ir al metodo desapareceReaparece y al final del codigo pero dentro del bloque de este metodo agregaremos el siguiente for:

        for(int i = Nivel.PRIMER_ALIEN;
            i != Nivel.ULTIMO_ALIEN + 1; i++){
            
            objetos.get(i).generar(objetos.get(
                    Nivel.INDICE_JUGADOR).getTransformar());
        }
Anuncios

Este bucle pasara por todos los indices que asignamos a los aliens cuando creamos a la clase Nivel, trabaja de forma similar a cuando generamos los lasers del jugador, despues por medio de get y el valor de i iremos obteniendo cada uno de los aliens e iremos generandolos uno por uno, veamos como quedo nuestro metodo con esta modificacion:

    public void desapareceReaparece(){
       ArrayList<GameObjeto> objetos = mNivel.getObjetos();
        for(GameObjeto o : objetos){
            o.setInactivo();
        }

        objetos.get(Nivel.INDICE_JUGADOR)
                .generar(objetos.get(Nivel.INDICE_JUGADOR)
                        .getTransformar());
        objetos.get(Nivel.INDICE_FONDO)
                .generar(objetos.get(Nivel.INDICE_FONDO)
                        .getTransformar());

        for(int i = Nivel.PRIMER_ALIEN;
            i != Nivel.ULTIMO_ALIEN + 1; i++){

            objetos.get(i).generar(objetos.get(
                    Nivel.INDICE_JUGADOR).getTransformar());
        }
    }
Anuncios

Nuestra siguiente modificacion sera en la clase Nivel mas exactamente en el metodo construirGameObjetos agregando el siguiente bloque al final del bloque de este metodo pero antes de devolver a objetos:

        objetos.add(PRIMER_ALIEN,
                fabrica.crear(new AlienChaserEspec()));
        objetos.add(SEGUNDO_ALIEN,
                fabrica.crear(new AlienPatrolEspec()));
        objetos.add(TERCER_ALIEN,
                fabrica.crear(new AlienPatrolEspec()));
        objetos.add(CUARTO_ALIEN,
                fabrica.crear(new AlienChaserEspec()));
        objetos.add(QUINTO_ALIEN,
                fabrica.crear(new AlienDiverEspec()));
        objetos.add(SEXTO_ALIEN,
                fabrica.crear(new AlienDiverEspec()));
        for (int i = PRIMER_LASER_ALIEN;
             i != ULTIMO_LASER_ALIEN + 1; i++){
            objetos.add(i,fabrica.crear(new AlienLaseEspec()));
        }
        mProximoLaserAlien = PRIMER_LASER_ALIEN;
Anuncios

En el momento que creamos la clase Nivel habiamos agregado basicamente tres objetos:

  • El fondo
  • El jugador
  • El Laser
Anuncios
Anuncios

En este caso hicimos algo similar pero creamos a los aliens y a cada alien le asignamos uno de los seis indices disponibles, luego para cada indice creamos un alien distinto en base a las especificaciones, observen como hicimos dos de cada uno para cada posicion de nuestro ArrayList llamado objetos, luego usamos un bucle for para que agregue los laser que vamos a utilizar para cada alien, para el ultimo paso seteamos el valor del proximo laser alien, veamos como quedo nuestro metodo:

    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; i++){
            objetos.add(i, fabrica.crear(
                    new JugadorLaserEspec()));
        }
        mProximoLaserJugador = PRIMER_LASER_JUGADOR;
        objetos.add(PRIMER_ALIEN,
                fabrica.crear(new AlienChaserEspec()));
        objetos.add(SEGUNDO_ALIEN,
                fabrica.crear(new AlienPatrolEspec()));
        objetos.add(TERCER_ALIEN,
                fabrica.crear(new AlienPatrolEspec()));
        objetos.add(CUARTO_ALIEN,
                fabrica.crear(new AlienChaserEspec()));
        objetos.add(QUINTO_ALIEN,
                fabrica.crear(new AlienDiverEspec()));
        objetos.add(SEXTO_ALIEN,
                fabrica.crear(new AlienDiverEspec()));
        for (int i = PRIMER_LASER_ALIEN;
             i != ULTIMO_LASER_ALIEN + 1; i++){
            objetos.add(i,fabrica.crear(new AlienLaseEspec()));
        }
        mProximoLaserAlien = PRIMER_LASER_ALIEN;

        return objetos;
    }
Anuncios

Nuestra ultima modificacion sera en la clase GameObjetoFabrica, en este caso iremos al metodo crear y agregaremos una serie de case antes del default en el switch:

                case "ComponenteAlienChaserMovimiento":
                    objeto.setMovimiento(new ComponenteAlienChaserMovimiento(
                            mGameEngineReferencia));
                    break;
                case "ComponenteAlienDiverMovimiento":
                    objeto.setMovimiento(new ComponenteAlienDiverMovimiento());
                    break;
                case "ComponenteAlienPatrolMovimiento":
                    objeto.setMovimiento(new ComponenteAlienPatrolMovimiento(
                            mGameEngineReferencia));
                    break;
                case "ComponenteGeneraAlienHorizontal":
                    objeto.setGenerador(new ComponenteGeneraAlienHorizontal());
                    break;
                case "ComponenteGeneraAlienVertical":
                    objeto.setGenerador(new ComponenteGeneraAlienVertical());
                    break;
Anuncios

En este caso agregamos los case con los componentes de los aliens, ya sea desde el movimiento de los mismos hasta el tipo de desplazamiento, en los casos que pasamos el dato de mGameEngineReferencia para poder manejar los laser de esos aliens, con esto ya tenemos a nuestros aliens generados, vamos a probarlo para ver como funciona hasta ahora mediante el siguiente video

Anuncios

Con esto ya tenemos en un 90% nuestro juego terminado, en el proximo post veremos el tema faltante como es la deteccion de colisiones.

Anuncios

En resumen, hoy hemos implementado la forma de generar nuestros aliens, hemos hecho todas las modificaciones necesarias y hemos probado como funciona hasta ahora, 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.

Donación

Es para mantenimento del sitio, gracias!

$1.00