Forum > Spanish

Como destruir un objeto del juego en allegro5

<< < (3/5) > >>

BlueIcaro:

--- Quote from: zelda16bit on December 31, 2021, 05:45:12 pm ---
--- 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

--- End quote ---

Es una buena idea, desde que vi el vídeo Nuño, estoy pensando en escribir algo de lo vaya aprendiendo de Allegro, que por ahora no es mucho. Pero necesito sacar tiempo aprender Allegro luego para escribir :-[

BlueIcaro:

--- Quote ---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;


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.

--- End quote ---
Hola, lo que puse encima no funcionada, da error al ejecutar. Pero el problema de la fuga de memoria sigue siendo que creas clases TDisparo y no las borras.
Saludos
/BLueIcaro

zelda16bit:

--- Quote from: BlueIcaro on December 31, 2021, 08:40:07 pm ---Es una buena idea, desde que vi el vídeo Nuño, estoy pensando en escribir algo de lo vaya aprendiendo de Allegro, que por ahora no es mucho. Pero necesito sacar tiempo aprender Allegro luego para escribir :-[

--- End quote ---

No hace falta que sea allegro,puede ser de cualquier libreria grafica que se sepa usar.Lo importante es enseñar los mecanismos necesarios para programar juegos con freepascal,una vez se sepa esto se puede trasladar facilmente a allegro.

zelda16bit:

--- Quote from: BlueIcaro on December 31, 2021, 09:18:16 pm ---
--- Quote ---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;


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.

--- End quote ---
Hola, lo que puse encima no funcionada, da error al ejecutar. Pero el problema de la fuga de memoria sigue siendo que creas clases TDisparo y no las borras.
Saludos
/BLueIcaro

--- End quote ---

Despues de ver esto me puse a liberar el codigo en distintas partes pero me da error.En el metodo pintar de la clase jugador estoy extrayendo la lista para eliminar el objeto y hay deberia de poderse liberar la memoria pero da error y en otras partes igual,es un lio esto de la liberacion de memoria.

Las listas genericas la estoy usando porque se recomendaba en la pagina de castle engine pero me da igual cual se use,mientras funcione.

BlueIcaro:
Hola Zelda16bit, hice una pequeña aproximación de como sería hacer listas usando TCollection.
Te adjunto el programa. Échale un vistazo.

Saludos

/BlueIcaro

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version