Programación Específica > Programación de Videojuegos

 Les Pido Ayuda

(1/2) > >>

Renatus:
Hola a todos  :lol: !!!
Despues de tanto tiempo, vuelvo a las andadas con alguna pregunta que, me gustaría pudieran responderme:

Estoy diseñando un rpg con tiles bajo C++ y Allegro. El mundo con tiles, así como los metodos de pintado y de armado del mundo ya están hechos pero donde
encuentro problemas es cuando planteo la inclusion de objetos moviles dentro del mundo.

Necesito almacenar la totalidad de los objetos moviles que apareceran dentro
del mundo en una estructura.
El problema es que quisiera codificar a cada objeto como una clase diferente.
Hace un tiempo me habían recomendado que usara una lista enlazada pero
hasta donde yo sé, una lista enlazada solo pude almacenar objetos de un mismo
tipo( O sea una misma clase).

La solucion sería tener una lista enlazada para cada tipo de objeto diferente?

Por ejemplo tener una lista particular para los objetos de tipo "televisor", otra para los objetos de tipo "personajes", etc.
O existe alguna manera de crear una lista enlazada que soporte objetos de tipo diferente?


Muchas gracias por su ayuda.
 :D

Renatus

JuanK:
NO,
aunque siempre hay muchas formas de llegar al mismo punto.

Proi si has hecho las cosas de la manera correcta, todos los personasjes u objetos moviles deben estar heredando de un mismo objeto comun, asi que el array es de este objeto comun del cual heredan.

O bien puede que todos esten implementando una interfaz  comun , asi que el  array puede ser de objetos que tengan esa interfaz.

Renatus:
Muchas gracias JuanK  :lol: .
La verdad es que no me ha quedado clara tu recomendación con respecto
a la lista enlazada de clases heredadas.

La idea de almacenar todos los objetos moviles existentes de un escenario
surje de la necesidad de darle a cada uno de ellos la oportunidad, uno a uno
por vez, de que procesen algunos metodos propios de actualizacion, y a la vez de pintado en el escenario.
Como el juego no sabe exactamente cuantos objetos existen en ese momento
en el escenario, consulta la lista para ver cuales y cuantos son.
De esta manera, se invoca un metodo comun de cada objeto, para darle
a cada objeto la posibilidad de que se actualize y se pinte en pantalla.

Lo que no llego a entender acerca de esto es:

Por ejemplo, si construyo una lista enlazada para objetos de un determinado tipo,
no podría introducir en esa lista objetos que estén construidos a base de ese tipo
porque el tipo nuevo que surje pasaría a ser otro diferente. O sí  :huh: ?

Muchas gracias por responder, de verdad que estoy bastante confundido con respecto a este asunto.
 :D

JuanK:
Bien, en efecto si una clase ha 'nacido' (heredado) a partir de otra, los objetos que se instancien de esta bien pueden ser 'casteados' como si fueran de la clase padre.

Auque esto puede njo ser tan real en todos los lenguajes, pero en lenguajes como C++, Java y C#, esto es totalment cierto.

Para tu caso aunque la clase televisor sea diferente de la case radio, en el caso de que ambos hayan sido creados derivando de la clase Actor, ambos pueden ser parte de un array de objetos tipo actor.

Creo que has entendido bien.

Neko-sama:
debieras poder tener un arreglo dinamico de objetos de un tipo por ejemplo alguna interfaz.

osea... haces que todos tus objetos... cualquiera sean hereden de esta interfaz... de esa forma creas el arreglo de tipo interfaz... asi sabes que todos tienen el metodo que necesitas...    ese es uno de los grandes usos que tiene usar una interfaz

................Emergencia
...............*SuenaSirena
......................||
.......... -----------------------
......... ||..........................||
......... ||..........................||
.......Auto.....................Camion


De esa forma Auto y Cambion van a heredar el metodo SuenaSirena y ademas son de un tipo en comun, entonces puedes hacer tu arreglo de tipo Emergencia y todo lo que agregues a ese arreglo no va a tener problemas porque herendan de Emergencia y si vas a llamar un metodo en comun... ese es SuenaSirena...

así no importa los tipos que sean estos porque en si todos tienen el mismo origen.

osea... no necesita ser una lista enlazada... solo un arreglo de punteros de tipo de alguna Interfaz...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa