Forum > Spanish

Como destruir un objeto del juego en allegro5

<< < (2/5) > >>

BlueIcaro:
Hola Zelda16bit. Veo que en tu programa creas objetos (clases) propias como TJugarodor y TDisparo.

Asegurate que tu objeto, dentro del método Desrtroy del mismo, borra todo lo que haya creado.

Viendo tú código, no parece que hayas dejado nada sin borrar. Manda una captura del resultado de heaptrc  a ver que dice.

Por otra parte, si envias tú código, y tiene varias unidades, es más cómodo que uses el menú publicar proyecto, dentro del menú proyecto. Con esto podrás crear un archivo comprimido con todo lo que necesita tú programa y subirlo al foro.

Saludos

BlueIcaro:

--- Quote from: Ñuño_Martínez on December 29, 2021, 09:54:58 pm ---  Ya lo siento, pero por mi trabajo apenas tengo tiempo libre.  Pero ya ves que otras personas también ayudan, afortunadamente. :)

--- End quote ---
A ver si entre todos levantamos una comunidad de videjuegos y lazarus/fpc en castellano
Saludos

zelda16bit:

--- Quote from: BlueIcaro on December 31, 2021, 04:17:34 pm ---Hola Zelda16bit. Veo que en tu programa creas objetos (clases) propias como TJugarodor y TDisparo.

Asegurate que tu objeto, dentro del método Desrtroy del mismo, borra todo lo que haya creado.

Viendo tú código, no parece que hayas dejado nada sin borrar. Manda una captura del resultado de heaptrc  a ver que dice.

Por otra parte, si envias tú código, y tiene varias unidades, es más cómodo que uses el menú publicar proyecto, dentro del menú proyecto. Con esto podrás crear un archivo comprimido con todo lo que necesita tú programa y subirlo al foro.

Saludos

--- End quote ---

He puesto la captura y he subido el ejemplo comprimido,pero le faltan los dll de allegro porque no me permite subir mas de 500 kb,lo de publicar proyecto no se donde esta.

zelda16bit:

--- Quote from: BlueIcaro on December 31, 2021, 04:20:48 pm ---A ver si entre todos levantamos una comunidad de videjuegos y lazarus/fpc en castellano
Saludos

--- End quote ---

Lo que necesita allegro/pascal son unos tutoriales sencillos que te enseñen a programar distintos tipos de juegos,o tutoriales cortos que te enseñen las cosas necesarias para programar tus propios juegos sin centrarte en ningun estilo en particular,si no es imposible avanzar. Un saludo y feliz año a todos

BlueIcaro:
Hola zelda16bit, fíjate en la imagen que adjunto. Indica que la fuga de memoria se produce en la línea 87 del archivo allegro10.lpr. Si observas esa línea en tú codigo podemos encontrar

--- Code: --- disparo := Tdisparo.Create(x+24,y);

--- End code ---

La línea siguiente, indica que fue llamada esa parte del progama, desde la línea 45.
También veo que las líneas siguientes son iguales, lo que indica que has creado más de una vez ese objeto (el de la línea 87) y no lo has destruido.
 
No he trabajado con listas genéricas, pero si funcionan igual que las listas hechas con TCollection, después de añadir el objeto a la lista ya puedes borrarlo.
Yo modificaría el código y lo dejaría así:

--- Code: ---  if (al_key_down(estado_de_teclas,ALLEGRO_KEY_Z)) and (contador > 10) then
    begin
      //crear disparo y añadir a la lista
      disparo := Tdisparo.Create(x+24,y);
      lista_disparo.Add(disparo);
      contador := 0;
      FreeAndNil(disparo); //Borrar el objeto
    end;

--- End code ---

Gracias por empaquetar el código. Si puedo lo prueba más tarde a ver si se soluciona el problema de la fuga de memoria.

Saludos
/BlueIcaro

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version