Bienvenidos sean a este post, en el post de hoy continuaremos las clases que nos faltan para las especificaciones de los objetos de nuestro juego.
Las clases se crearan con las mismas caracteristicas (y casi el mismo codigo) donde lo unico que va a variar es el nombre de la misma pero las siguientes caracteristicas se mantendran igual:
- Tipo: Class
- Paquete: especoj
El nombre de cada clase ira antes del codigo, con esto aclarado vamos a la primera clase que vamos a crear:
EspecLosas
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecLosas extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "ladrillo";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecLosas(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Como pueden ver el codigo es similar a lo visto en el post anterior, pero en este caso tenemos una particularidad la cual es la velocidad ya que al ser un elemento inerte sera del valor 0, el resto es de forma similar a lo hablado anteriormente inclusive su constructor pasemos a la siguiente clase.
EspecCarrito
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecCarrito extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "carrito";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(2f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecCarrito(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Esta clase va a ser muy similar a la anterior pero solamente va a variar el bitmap y el tamaño pero despues el resto siguen iguales, pasemos a la siguiente clase.
EspecCarbon
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecCarbon extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "carbon";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecCarbon(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Idem a la primer clase donde varia unicamente el nombre del bitmap pasemos a la siguiente clase.
EspecConcreto
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecConcreto extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "concreto";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecConcreto(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
De vuelta una clase muy similar a la anterior pero varia el nombre del Bitmap pasemos a la siguiente clase.
EspecArbolMuerto
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecArbolMuerto extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "arbol_muerto";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(2f,4f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueDecorativo"
};
public EspecArbolMuerto(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Al igual que en el caso del Carrito a parte de variar el bitmap tambien modificaremos el tamaño del mismo y tambien tenemos una modificacion entre los componentes y para este caso tenemos uno que actualiza el bloque decorativo pero de esto hablaremos mas adelante , pasemos a la siguiente clase.
EspecCesped
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecCesped extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "cesped";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecCesped(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Revisen el codigo y veran que es lo mismo que hasta ahora, pasemos a la siguiente clase.
EspecPosteLuz
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecPosteLuz extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "poste_luz";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,4f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueDecorativo"
};
public EspecPosteLuz(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este caso es muy similar a cuando creamos la clase para el Arbol Muerto pero como estas seran decorativas la actualizacion se hace con otro componente, tambien varia el tamaño y el bitmap, pasemos a la siguiente clase.
EspecPisoQuemado
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecPisoQuemado extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "quemado";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecPisoQuemado(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este es otro de los objetos que usaremos como plataforma para poder caminar sobre los mismos y no sera decorativo, pasemos a la siguiente clase.
EspecPisoNevado
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecPisoNevado extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "nieve";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecPisoNevado(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Seguimos con el mismo codigo y como siempre varia el bitmap, pasemos a la siguiente clase.
EspecArbolNevado
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecArbolNevado extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "arbol_nevado";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(3f,6f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueDecorativo"
};
public EspecArbolNevado(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este es otro objeto decorativo, por ende variara el bitmap, el tamaño y usara los componentes del arbol muerto y/o poste de luz, pasemos a la siguiente clase.
EspecEstalactita
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecEstalactita extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "estalactita";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(2f,4f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueDecorativo"
};
public EspecEstalactita(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este es otro objeto decorativo con un codigo similar a los anteriores, pasemos a la siguiente clase.
EspecEstalagmita
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecEstalagmita extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "estalagmita";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(2f,4f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueDecorativo"
};
public EspecEstalagmita(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Otro de los objetos que llamaremos decorativo, pasemos a la siguiente clase.
EspecPilaPiedras
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecPilaPiedras extends EspecJuegoObjeto {
private static final String tag = "objeto inerte";
private static final String bitmapNombre = "pila_piedras";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(2f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecPilaPiedras(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este sera el ultimo de nuestros objetos inertes, es decir que no tendran un movimiento o una animacion y pueden ser usados tanto para nuestras plataformas donde andara el valiente de Pepe o pueden ser meramente decorativas, pasemos a algunas clases distintas.
EspecColeccionable
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecColeccionable extends EspecJuegoObjeto {
private static final String tag = "colecionable";
private static final String bitmapNombre = "moneda";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecColeccionable(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Si observan el codigo veran que es muy similar a cuando vimos los objetos inertes pero en este caso variamos el tag, ya no es inerte sino coleccionable, obviamente tambien variamos el bitmap pero lo diferente con respecto a los anteriores es que al momento de detectar la colision le haremos tomar unas acciones diferentes a las clases anteriores, pasemos a la siguiente clase.
EspecFuego
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecFuego extends EspecJuegoObjeto {
private static final String tag = "muerte";
private static final String bitmapNombre = "fuego";
private static final int animacionFrames = 3;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(1f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficosAnimados",
"ComponenteActualizaBloqueInanimado"
};
public EspecFuego(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Esta clase sera una de las encargadas de «matar» a nuestro personaje, en este caso volveremos a modificar el tag para identificar esta accion del objeto, tambien cambiamos el bitmap (como siempre), la otra modificacion es en animacionFrames y por ultimo utilizamos el componente de animacion de nuestro jugador porque este no sera una sola imagen sino varias para realizar el efecto de fuego, el resto es igual a las otras clases, pasemos a al siguiente clase.
EspecMuerteInvisible
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecMuerteInvisible extends EspecJuegoObjeto {
private static final String tag = "muerte";
private static final String bitmapNombre = "muerte_visible";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(10f,10f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecMuerteInvisible(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Al igual que la clase anterior tambien la usaremos para indicar la muerte de nuestro personaje cada vez que caigamos de algunas de las plataformas, por ahora sera algo visible pero mas adelante veremos como volverlo invisible, pasemos a la siguiente clase.
EspecPlataformaMovible
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecPlataformaMovible extends EspecJuegoObjeto {
private static final String tag = "plataforma movible";
private static final String bitmapNombre = "plataforma";
private static final int animacionFrames = 1;
private static final float velocidad = 3f;
private static final PointF tamano = new PointF(2f,1f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueMovible"
};
public EspecPlataformaMovible(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este objeto es muy similar a los anteriores pero no se trata de un objeto inerte que usaremos como plataforma o para aniquilar a nuestro personaje sino que sera la parte de plataforma que se desplazara en pantalla ya se en forma vertical como horizontal pero de eso hablaremos mas adelante, pasemos a la ultima clase.
EspecObjetivo
package org.example.pepeaventura.especoj;
import android.graphics.PointF;
public class EspecObjetivo extends EspecJuegoObjeto {
private static final String tag = "objeto objetivo";
private static final String bitmapNombre = "objetivo";
private static final int animacionFrames = 1;
private static final float velocidad = 0f;
private static final PointF tamano = new PointF(3f,3f);
private static final String[] componentes = new String[] {
"ComponenteGraficoBloqueInanimado",
"ComponenteActualizaBloqueInanimado"
};
public EspecObjetivo(){
super(tag,bitmapNombre,velocidad,
tamano,componentes,animacionFrames);
}
}
Este sera el objeto que se encargue de sacarnos del nivel, es decir la salida del mismo, como pueden ver es muy similar a los objetos inertes pero varia el tag para al igual que el coleccionable cuando usemos el detector de colisiones le aplicaremos los metodos correspondientes para poder salir del nivel pero de esto hablaremos mas adelante.
Con esto ya tenemos a nuestras clases encargadas de los componentes de cada uno de los objetos que seran parte de nuestro juego y niveles, si bien al igual que en el proyecto anterior estos serviran de referencia y seran los encargados de decirle a nuestro Game Engine con cual debe trabajar para cada objeto, antes de finalizar deben haber un listado de clases en el paquete como se ve en la siguiente imagen

En resumen, hoy hemos completado las clases de especificaciones faltantes, hemos visto como hemos dividido en las partes que seran inertes ya sea para servirnos de plataformas, de decoracion o de salida, tambien hemos visto algunos que seran los encargados de herir a nuestro heroe, 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.


Donación
Es para mantenimento del sitio, gracias!
$1.00
