Anuncios

Bienvenidos sean a este post, en los posts anteriores estuvimos trabajando sobre algunas clases que nos permitian manejar el fondo y a nuestro jugador hoy implementaremos los cambios en las otras clases para poder usarlos.

Anuncios

Antes de aplicar estos cambios debemos descargar el siguiente archivo:

Anuncios

En este archivo vamos a tener dos archivos que van a ser la animacion de Pepe y del Fuego, al igual que antes debemos extraer los archivos en la pc, copiarlos con Ctrl+C, ir al Android Studio mas exactamente al recurso res/drawable y pegarlas mediante Ctrl+V, una vez realizado aparece un cuadro y deben seleccionar a drawable (no drawable-v24), presionan Ok, aparece un nuevo cuadro, lo dejan como aparece y presionen Ok para copiar los nuevos archivos, con esto realizado prosigamos con nuestras modificaciones.

Anuncios

Nuestra primera modificacion sera en la clase ManagerNivel, mas exactamente en el switch donde agregabamos los objetos en base a las losas del nivel, vamos a modificar los siguientes case:

                    case '1':
                        break;
                    case '2':
                        break;
                    case '3':
                        break;
                    case 'p':
                        break;
... el resto de case ...
                    case 'z':
                        break;
Anuncios

Basicamente son los que dejamos en blanco y vamos a modificarlos de la siguiente manera:

                    case '1':
                        objetos.add(fabrica.crear(
                                new EspecFondoCiudad(),coords));
                        break;
                    case '2':
                        objetos.add(fabrica.crear(
                                new EspecFondoCueva(),coords));
                        break;
                    case '3':
                        objetos.add(fabrica.crear(
                                new EspecFondoMontana(),coords));
                        break;
                    case 'p':
                        objetos.add(fabrica.crear(
                                new EspecJugador(),coords));
                        JUGADOR_INDICE = objetos.size() - 1;
                        break;
                    case 'z':
                        objetos.add(fabrica.crear(
                                new EspecFuego(),coords));
                        break;
Anuncios

En este caso crearemos principalmente los tres fondos de pantalla con los tres primeros case, agregando a objetos por medio del crear de fabrica y creando los nuevos objetos, lo mismo haremos con el jugador y el fuego, con los dos ultimos case, es decir que en este momento a diferencia de la ultima vez que lo probamos tendremos un fondo y a nuestro jugador, vamos a proceder a la siguiente modificacion.

Anuncios

Para la siguiente modificacion dejamos atras la clase ManagerNivel y pasamos a la clase GameObjetoFabrica, donde teniamos dos switch, uno para los objetos y otro para los componentes, veamos primer los dos case que tenemos en el switch de los objetos:

        switch (objeto.getTag()){
            case "fondo":
                break;
            case "jugador":
                break;
            default:
                objeto.setTransformar(new Transformar(
                        espec.getVelocidad(),
                        espec.getTamano().x,
                        espec.getTamano().y,
                        ubicacion));
                break;
        }
Anuncios

En este switch tenemos vacio el case para fondo y para jugador, vamos a modificaclos de la siguiente manera:

            case "fondo":
                objeto.setTransformar(new TransformarFondo(
                        espec.getVelocidad(),
                        espec.getTamano().x,
                        espec.getTamano().y,
                        ubicacion));
                break;
            case "jugador":
                objeto.setTransformar(new JugadorTransformar(
                        espec.getVelocidad(),
                        espec.getTamano().x,
                        espec.getTamano().y,
                        ubicacion));
                break;
Anuncios

Con esta modificaciones podemos transformar nuestro fondo y jugador, porque ahora los tenemos creado con la modificacion anterior, nuestra siguiente modificacion sera en el otro switch donde agregaremos los siguientes case antes del default:

                case "ComponenteEntradaJugador":
                    objeto.setTransformarJugadorEntrada(
                            new ComponenteEntradaJugador(
                                    mGameEngineReferencia));
                    break;
                case "ComponenteGraficosAnimados":
                    objeto.setGraficos(new ComponenteGraficosAnimados(),
                            mContexto,
                            espec,
                            espec.getTamano(),
                            mPixelsPorMetro);
                    break;
                case "ComponenteActualizaJugador":
                    objeto.setMovimiento(
                            new ComponenteActualizaJugador());
                    break;
                case "ComponenteGraficosFondo":
                    objeto.setGraficos(new ComponenteGraficosFondo(),
                            mContexto,
                            espec,
                            espec.getTamano(),
                            mPixelsPorMetro);
                    break;
                case "ComponenteActualizarFondo":
                    objeto.setMovimiento(
                            new ComponenteActualizarFondo());
                    break;
Anuncios

El primer case sera para crear el objeto que se encargara de los toques en pantalla de nuestro jugador, el segundo case sera para los objetos animados, tanto el jugador como el fuego, el tercer case hara la actualizacion sobre el jugador es decir cada vez que lo movamos, el cuarto sera para el fondo y el ultimo sera para actualizar el fondo, con esto ya podemos ver verdaderamente a nuestro jugador y nuestro fondo, si observaron en el primer case nos falta un metodo por definir, nuestra ultima modificacion sera justamente esta.

Anuncios

Para ello debemos ir a la clase GameObjeto y agregaremos el siguiente metodo:

    void setTransformarJugadorEntrada(ComponenteEntradaJugador e){
        e.setTransformar(mTransformar);
    }
Anuncios

Con esto solucionamos el error que nos quedaba, con todas estas modificaciones realizadas podemos probar nuevamente nuestro juego como se ve en el siguiente video

Anuncios

En este video ya podemos ver mejor en accion a nuestro juego pero como todavia no agregamos la deteccion de colisiones, el heroe sigue de largo y cae infinitamente, pero podemos ver como funciona el desplazamiento y como se ubico todo correctamente.

Anuncios

En resumen, ya tenemos un 95% del juego completo, hemos podido implementar lo ultimo que agregamos con respecto a la prueba anterior, si bien nos falta muy poco ahora viene lo mas dificil, pero esta quedando mas claro, 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