Hola
JuanK...
Pues resulta que eso es lo que estaba intentando hacer
, ya que en el codigo de ejemplo que brinda ese articulo utiliza las listas enlazadas
, entonces yo hice mis propias funciones de listas enlazadas
... por ahora ya resolvi ese problemita...
Pero ahora el problema es otro
...
La logica de programacion esta super... es mas o menos asi:
se crea una clase Actor, de esta clase se deriban otras clases para los objeto, por ejemplo Nave, y estas heredaran los atributos de la clase Actor... pero para cada clase derivada se sobreescribiran algunos metodos, como draw, para que cada objeto dibuje lo que tenga que dibujar... ¿un poco complicado?... veamoslo en codigo
class Actor
{
public:
Actor();
~Actor();
void set_image(BITMAP *bmp);
void draw(BITMAP *bmp);
...
protected:
int x;
int y;
BITMAP *imagen;
...
};
Actor::Actor()
{
}
Actor::~Actor()
{
}
void Actor::set_image(BITMAP *bmp)
{
image=bmp;
}
void Actor::draw(BITMAP *bmp)
{
//aqui va el codigo para dibujar en bmp la imagen contenida en image
}
class Nave : public Actor
{
public:
Nave();
~Nave();
void draw(BITMAP *bmp); //reescribimos el metodo draw
...
protected:
int vy;
...
};
Nave::Nave()
{
//codigo para constructor de Nave
}
Nave::~Nave()
{
//Codigo para destructor de Nave
}
void Nave::draw(BITMAP *bmp)
{
//Codigo para dibujar la imagen contenida en image hacia bmp
}
algo asi... esto es de lo que me acuerdo y un poco de la logica que se utiliza... luego de esto, se declara un objeto de tipo ActorManager, que es una clase que se encarga del control de todos los actores, este objeto tiene una lista (de aqui la lista enlazada) de todos los actores que se declaren en el juego, accesando a sus metodos draw para que se dibujen en un BITMAP uno por uno.
El problema es que cuando yo declaro un objeto de tipo
Nave, por ejemplo, y lo agrego al administrador de actores (ActorManager) este lo almacena como un objeto de tipo
Actor, por lo tanto el metodo grafico que utiliza es el de la clase
Actor y no el metodo que se sobreescribio en la clase
Nave...
no se si me di a entender
... es un poco complicado para mi explicarlo
... si gustan pueden bajar este articulo desde
AquiLa logica esta super, a como lo habia dicho, pero no he podido ver los frutos de los cambios que le he hecho y acoplado a lo que proximamente sera mi juego...
no se porque lo de sobreescribir el metodo y almacenarlo no funciona... sera por que yo estoy trabajando con Dev-C++ y el en DJGPP-RHIde... no lo creo...
Gracias a todos por tomarse la molestia de leer este post, bajarse el articulo, leerlo, probarlo, comparar sus resultados con los mios y darme una respuesta a mi problemilla... je je je
See you!!! Piyey...