Se muestra como hacer una clase objeto, que se complemente con todo lo anterior y se puedan mover objetos por el escenario.
En ejemplo tenemos dos objetos que no podemos mover, que son el arbusto y las flores. Y otros dos que si se pueden mover. Pero además el arbusto actúa como obstáculo.
Código de la clase Objetos
class Objetos
{
int x, y;
ALLEGRO_BITMAP* img;
bool colisiona;
int ancho, alto;
public:
int getAncho() { return ancho; }
int getAlto() { return alto; }
int getX() { return x; }
int getY() { return y; }
void crea(ALLEGRO_BITMAP* i, int _x, int _y, bool c = false)
{
img = i;
x = _x;
y = _y;
colisiona = c;
ancho = al_get_bitmap_width(img);
alto = al_get_bitmap_height(img);
}
void pinta()
{
al_draw_bitmap(img, x + globalx, y + globaly, 0);
}
bool comprueba()
{
if (colisiona)
{
int jx = jugador.getX();
int jy = jugador.getY();
if (jx + jugador.getTam() > x && jx < x + ancho && jy + jugador.getTam() > y && jy < y + alto/2 )
{
return true;
}
}
return false;
}
void posiciona(int _x, int _y)
{
x = _x;
y = _y;
}
bool cerca(int _x, int _y)
{
return abs(x - _x) + abs(y - _y) < jugador.getTam() + 2 ;
}
void cambiaImagen(ALLEGRO_BITMAP* i)
{
img = i;
}
};
La clase objetos podría ser una clase independiente, salvo que en este ejemplo concretamente no lo es debido a que se utilizan algunas variables externas a la clase. Concretamente tenemos las variables globalx y globaly que contiene la posición para el scroll de la pantalla. Además se utilizan llamadas a la clase player. Aunque todo esto se podría arreglar, pasando esos datos que se utilizan como parámetros.
La clase objeto cuenta con una imagen, la posición x,y, el ancho y alto de la imagen, y una variable de control llamada colisiona.
Tiene varios métodos para obtener los datos, que son: getX(), getY(), getAlto(), getAncho().
El método principal para inicializar la clase se llama crea, y necesita varios parámetros para crear el objeto, el primero es la imagen del objeto, lo siguiente la posición donde quieres que aparezca x,y. Y por ultimo un valor booleano que nos indica si el objeto colisiona o no.
El método pinta muestra por pantalla la imagen en la posición indicada por x,y.
El método comprueba, se encarga de comprobar si colisiona el objeto con el jugador.
El método posiciona, le indica una nueva posición al objeto mediante los parámetros x,y.
La función cerca, devuelve true si la posición dada por los parámetros x,y esta cerca del objeto.
La función cambiaImagen, sirve para cambiar la imagen una vez creado el objeto.
Para quien quiera probar el código y trastear con el, lo dejo en el siguiente enlace.
No hay comentarios:
Publicar un comentario