Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Mándale un correo a Javier Miranda [ulpgc.es], una autoridad en la materia, al que aprovecho para enviar un afectuoso saludo.
    --


    --------
    In fire we trust [blogspot.com]
    --------
  • Ahora compila bien, pero no se comporta como toca :-(

    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??
  • Re:ada ada ada

    (Puntos:2)
    El tipo T_objeto es un tipo variable. Tenemos
      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
    [ Padre ]
  • 1 respuesta por debajo de tu umbral de lectura actual.