Recent

Author Topic: Como destruir un objeto del juego en allegro5  (Read 15351 times)

zelda16bit

  • Full Member
  • ***
  • Posts: 118
Re: Como destruir un objeto del juego en allegro5
« Reply #15 on: January 01, 2022, 08:14:23 pm »
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

Hola BlueIcaro, he visto el ejemplo y veo que tienes que crear una clase que herede de Tcollection y implementar tu mismo los metodos.En la unidad generic.collection solo tienes que añadir la unidad,inicializarla y empezar a usar los metodos que trae.

Es infinitamente mas sencillo con generic collection,deberias usar esta unidad,pero si consigues recrear mi ejemplo y solucionar el problema de la memoria pues me fijare y lo trasladare con generic.collection.

BlueIcaro

  • Hero Member
  • *****
  • Posts: 793
    • Blog personal
Re: Como destruir un objeto del juego en allegro5
« Reply #16 on: January 01, 2022, 10:58:18 pm »
Hola, el ejemplo que puse no tiene fugas de memoria.
Sobre las clases genéricas, la verdad es que una asignatura pendiente que tengo. A ver si les dedico algo de tiempo.
Saludos

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1186
    • Burdjia
Re: Como destruir un objeto del juego en allegro5
« Reply #17 on: January 04, 2022, 11:58:21 am »
Hola Ñuño.

No encuentro esas funciones que comentas para destruir objetos,si puedes decirme cuales son y poner algun ejemplo de ello,aunque tambien me vendria bien que me dijeras como solucionar el problema que tengo con las listas de objetos en el ejemplo que he puesto en este hilo,no consigo ver donde estan los errores.

A lo que me refiero es que cada función al_create_* tiene su al_destroy_*.  En el caso que pones no veo nada raro.


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

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

Pues sí.  Ahora estoy replanteando los vídeos que quería hacer, a ver si me es
más fácil hacerlos y subirlos.
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

BlueIcaro

  • Hero Member
  • *****
  • Posts: 793
    • Blog personal
Re: Como destruir un objeto del juego en allegro5
« Reply #18 on: January 04, 2022, 04:49:53 pm »

Pues sí.  Ahora estoy replanteando los vídeos que quería hacer, a ver si me es
más fácil hacerlos y subirlos.

Hola Nuño, estaba en empezando a hacer pequeños programa, para probar cosillas. Podría "adecentarlos" un poco y te los paso para añadirlos como demos/ejemplos.
/Saludos

zelda16bit

  • Full Member
  • ***
  • Posts: 118
Re: Como destruir un objeto del juego en allegro5
« Reply #19 on: January 04, 2022, 05:05:14 pm »
Hola Ñuño.

No encuentro esas funciones que comentas para destruir objetos,si puedes decirme cuales son y poner algun ejemplo de ello,aunque tambien me vendria bien que me dijeras como solucionar el problema que tengo con las listas de objetos en el ejemplo que he puesto en este hilo,no consigo ver donde estan los errores.

A lo que me refiero es que cada función al_create_* tiene su al_destroy_*.  En el caso que pones no veo nada raro.

Entiendo...repecto al problema que tengo con la liberacion de objetos y listas,sabes de alguna solucion ,porque yo no la he encontrado.El disparo se crea muchas veces pero no se libera y no veo salida,ya he probado muchas cosas y ninguna sirve.

Tal vez halla otra forma de hacer esto pero no la veo,este problema no lo tengo con lenguajes como python y processing.

Ya me has respondido dos veces y dices no ver nada raro,mejor sera que te descargues el ejemplo que he subido y lo pruebes tu mismo en modo consola para ver que hay objetos que no se liberan,tambien tienes una captura del problema.
« Last Edit: January 04, 2022, 05:22:02 pm by zelda16bit »

BlueIcaro

  • Hero Member
  • *****
  • Posts: 793
    • Blog personal
Re: Como destruir un objeto del juego en allegro5
« Reply #20 on: January 04, 2022, 07:18:51 pm »


El problema no está en Allegro. El problema de tú programa está en la gestión que haces de las listas genericas.
Haz la siguiente prueba: Abre tú programa. Y sin hacer nada más, ciérralo. Verás que no hay fugas de memoria. Tal como te comenté, el problema está en la gestión de la lista de disparos. Estas usando de una manera incorrecta la lista generica, yo no sé usar listas genericas. Pero te pasé un ejemplo usando TCollection, el cual no tiene problemas. Pero este ejemplo no es valido para ti.


Tal vez halla otra forma de hacer esto pero no la veo,este problema no lo tengo con lenguajes como python y processing.


Para encontrar la solución, te recomiendo que primero hagas pruebas creando y destruyendo la lista de genericos. Por cierto, estuve viendo algo, y ahora que lo pienso, estás usando listas genericas en modo delphi, pero tu unidad no activa el modo Delphi, échale un vistazo a esta entrada de la wiki: https://wiki.freepascal.org/Generics

Por otra parte, tus objetos hacen uso de variables globales, algo que creo que complica el programa cuando podrían ser métodos o propiedades. Es mejor que hagas cosas sencillas y pequeñas, para ir conociendo el lenguaje.

Saludos

/Blueicaro

lainz

  • Hero Member
  • *****
  • Posts: 4468
    • https://lainz.github.io/
Re: Como destruir un objeto del juego en allegro5
« Reply #21 on: January 04, 2022, 10:21:07 pm »
Las listas genericas tienen por lo general una opción que dice OwnsObjects. Si es True, los objetos de esa lista se van a liberar cuando liberes la lista, sino van a permanecer.

No se si lo tuviste en cuenta, pero al salir el disparo del area de la pantalla del juego, deberías destruirlo y sacarlo de la lista.

zelda16bit

  • Full Member
  • ***
  • Posts: 118
Re: Como destruir un objeto del juego en allegro5
« Reply #22 on: January 05, 2022, 05:11:02 pm »
Creo que es mejor que descanse por un tiempo de este lenguaje y me ponga con otras cosas.

Un saludo y gracias por la ayuda. :)

lainz

  • Hero Member
  • *****
  • Posts: 4468
    • https://lainz.github.io/
Re: Como destruir un objeto del juego en allegro5
« Reply #23 on: January 07, 2022, 02:55:19 pm »
De nada, si es para hacer juegos hay herramientas dedicadas como Godot, Unity.. Que es mas fácil. Pascal lo podés usar para otra cosa que no sean los juegos, ahi te va a costar menos.

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1186
    • Burdjia
Re: Como destruir un objeto del juego en allegro5
« Reply #24 on: January 08, 2022, 02:07:49 pm »
Hola Nuño, estaba en empezando a hacer pequeños programa, para probar cosillas. Podría "adecentarlos" un poco y te los paso para añadirlos como demos/ejemplos.
/Saludos

Pues podría ser.  Si eso, me mandas un DM.
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

 

TinyPortal © 2005-2018