type Pt_Objeto is access T_Objeto;
type T_Inventario is array (1
De lo contrario me aparecía un precioso "unconstrained element type in array declaration"
Para asignar los valores uso
Heroe.Inventario(1):=new T_Objeto(Puñal);
Sin embargo, cuando quiero comprobar el valor en un case, me sale un error bastante raro...
Cuando pongo
case Heroe.Inventario(Contador).all is
con "contador" un entero entre 1 y 10, me aparece el error al compilar "expected a discrete type; found type PT_Objeto defined at objetos.ads" En teoria accedo a la posición del puntero... no? Entonces porque detecta que estoy usando un puntero?
Si te ves muy apurado ...
(Puntos:1)( http://postcombustion.blogspot.com/ | Última bitácora: Sábado, 15 Enero de 2005, 15:47h )
--------
In fire we trust [blogspot.com]
--------
Pues sigue sin ir...
(Puntos:2)( http://barrapunto.com/ | Última bitácora: Sábado, 13 Octubre de 2007, 12:30h )
El campo inventario del registro lo inicializo así
Inventario : T_Inventario:= (others => new T_Objeto'(t=>nada))
Sin embargo cuando leo de heroe.inventario(loquesea) me lee cualquier cosa: a veces un puñal, otras nada, otras una espada... y otras me da error "invalid data". ¿Que se supone que hago mal?
Además si hago
Pers.Inventario(1):=new t_objeto'(t=>puñal);
me dice que falta definir valores para daño_0 y velocidad_0. Pero ya los he inicializado al definir el tipo t_objeto, y precisamente quiero usar ESOS valores que vienen por defecto. Porque no me deja??
¿Quieres saber por donde viajan tus billetes? [eurobilltracker.com]
Re:ada ada ada
(Puntos:2)( http://barrapunto.com/ | Última bitácora: Sábado, 13 Octubre de 2007, 12:30h )
type Objeto is
(Puñal,
Espada,
Arco,
Ballesta,
Botas,
Nada);
subtype Armafilo is Objeto range Puñal..Espada;
subtype Armadistancia is Objeto range Arco..Ballesta;
type T_Objeto (T: Objeto) is
record
case T is
when Armafilo=>
Daño_0: Integer:=Objeto'Pos(T)*10;
Retardo_0:Integer:=Objeto'Pos(T)*2;
when Armadistancia=>
Daño_1: Integer:=Objeto'Pos(T)*8;
Retardo_1:Integer:=Objeto'Pos(T)*2-2;
Municion:Integer:=10;
when Botas=>
Velocidad_Extra: Integer:=2;
when others=>
null;
end case;
end record;
Es que Heroe.Inventario es un array de punteros acces of T_Objeto. En teoria es eso, un inventario. La posición 1 puede tener cualquier objeto, la posición 2 también puede tener cualquier objeto, incluso repetido... lo que quiero es con ese case definir la textura que pintaré en el cuadro del inventario
case Heroe.Inventario(Contador).all is
when T_Objeto(Puñal)=>
Cuadro_Inv:=Load_Bitmap("Inv_Punyal");
when T_Objeto(Espada)=>
Cuadro_Inv:=Load_Bitmap("Inv_Espada");
etc
Antes había hecho el inventario como array de tipo Objeto a secas, lo que pasaba es que las propiedades de cada objeto las decidía en el programa principal y me pareció muy cutre (si hacer un "juego" con adagraph no es de por sí cutre... xDDD), así que ya defino sus propiedades desde el paquete objetos.ads
PS: Si quereis ver una screen de lo que llevo por ahora, aquí esta :P
http://img89.exs.cx/img89/373/adazelda2jn.jpg
¿Quieres saber por donde viajan tus billetes? [eurobilltracker.com]