Problemas de herencias en tiempo de ejecución

Started by Danielo515, September 18, 2008, 02:59:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

1)

   until(coche_a_frenar.velocidad_publica<=velocidad_final || !exists(coche_a_frenar));

por

   until(!exists(coche_a_frenar) || coche_a_frenar.velocidad_publica<=velocidad_final);

2) si el id a procesar viene de un collision no seria necesario el exists para ese id (no vi que ident venia de un collision)

Creo que solo es el 1)... asi, a simple vista no vi ninguno mas.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Danielo515

efectivamente ident viene de collision, pero no creo que sea problema del ident (es decir, no accede mucho al ident, y desde luego el proceso frenada no accede a el, sino que le pasan un valor suyo como parametro. El problema yo creo que viene cuando el abuelo muere en medio de una iteración del bucle de process_frenada, que no detecta que ha muerto e intenta acceder a sus valores. ¿Es  posible esto? Entonces el mismo problema se presentaría aunque viniera de un collision.

SplinterGU

nadie puede morir fuera de un frame... mientras un proceso se ejecuta, ningun otro lo hace, solo cuando se ejecuta un frame se ejecuta otro proceso. pense que ya lo habia dejado en claro...

cambiaste el punto 1)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Danielo515

Perdona splinter, sí que lo cambié, y ahora parece que ya no da ese error, he recredo , bueno , he hecho lo mismo que hacía antes cuando daba el error tres o cuatro veces y lo he llevado un poco al límite y ya no aparece, parece que la sutileza no es mi fuerte, ja jaja. Muchas gracias. Como ya dije, a los créditos que vas.

Windgate

Hola a todos, me acabo de leer el hilo entero mientras buscaba información sobre el uso de signal.

La cosa es que quiero "capturar" una señal para que mi proceso disparo realice una acción cuando el proceso enemigo le manda una señal...

Había pensado que signal_action devuelve un valor si se recibe la señal y otro valor si no es así, pero no consigo llegar a buen puerto... ¿Alguien sabe decirme en qué se basa el valor que devuelve sig_action? He leído el function_list y he mirado otras fuentes pero no hay manera...

En cualquier caso gracias!
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

no, signal_action permite decir si una señal sera ignorada o no...
lo que vos queres hacer lo podes hacer seteando una variable local a un proceso con un valor determinado... y chequear en este ese valor...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

¿Quieres decir que si el proceso disparo tiene la variable:

LOCAL bool muerto=FALSE;

un proceso enemigo podría ejecutar:

IF (objeto=collision(type disparo)) objeto.muerto=TRUE; END?

Pensaba que el acceso a variables locales a partir del ID del proceso había dejado de ser posible, creo recordar que en Fenix 0.92 no podía hacerse, corrígeme si me equivoco que soy un poco noob...

Y por supuesto, ¿La captura de señales (En plan sistema operativo UNIX) no puede hacerse en procesos de Bennu?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

si, se podia y se puede... pero tenes que usar ==, si usas = estas asignando el valor TRUE a objecto.muerto

la captura de señales, de momento no es posible...

pero posiblemente en un futuro se podra hacer algun modulo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

OK, Splinter, esa característica me será no de mucha, sino de MUCHíSIMA ayuda.

En el ejemplo de código sí que quería asignar un TRUE a la muerte del disparo, para que el disparo sepa que debe morir. Lo de detectar colisiones mutuamente entre procesos distintos lo tenía un poco atragantado pero creo que ya tengo la solución.

Thanks!
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2