Bennu Game Development

Foros en Español => General => Topic started by: warrior_rockk on February 12, 2015, 03:15:33 PM

Title: Declarar proceso ficticio para herencia de variables publicas
Post by: warrior_rockk on February 12, 2015, 03:15:33 PM
Utilizando las variables publicas, tienes que asociar la id de un proceso que las utilice a una variable del tipo del proceso en si para que el compilador reconozca el acceso a esa variable publica. El problema viene cuando no conocemos el tipo de proceso que tenemos almacenado en la variable que usamos como ID y , por lo tanto, queremos definirla como un tipo "genérico". Lo he hecho de la siguiente forma y me funciona, pero quiero saber vuestra opinión y si es correcto usarlo:



declare process entidad()
public
int vida;
end
end


process proceso1()
public
int vida=100;
begin
loop
frame;
end;
end;


process proceso2()
public
int vida=90;
begin
loop
frame;
end;
end;


Process main()
private
entidad idProcess;
Begin

idProcess = proceso1();
say(idProcess.vida);
idProcess = proceso2();
say(idProcess.vida);
loop
frame;
end;
End;



La idea es simple, declaramos un proceso ficticio llamado "entidad" que no se va a usar en el codigo pero con las variables publicas definidas. Luego creamos los procesos normales que utilizaran esas variables publicas definiendolas, y, ya podemos crear una variable de tipo "entidad" que contiene la referencia a esas variables publicas con lo que, cuando asociemos esa variable a un proceso cualquiera (de los definidos), podremos acceder a las variables publicas.


¿Puede valer? Funcionar, funciona...



Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: JaViS on February 12, 2015, 05:39:38 PM
Muy bueno!! muy inteligente, es como usar interfaces!
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: panreyes on February 12, 2015, 06:53:21 PM
Interesante :!

Definitivamente, es la forma perfecta para engañar al BGDC :)


----


[size=78%]Aunque en mi caso no me ha funcionado xD[/size]
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: emov2k4 on February 12, 2015, 08:14:11 PM
hace dos dias necesitaba esto...  :o
al final lo solucione de otra forma... pero esto es menos lio...
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: warrior_rockk on February 13, 2015, 08:04:51 AM
Vaya! Me alegro que pueda ser de utilidad. Veo que no soy el único que busca triquiñuelas para usar algo de herencia/PPO en Bennu ajja.
¿no te ha funcionado Pixel? ¿error de compilación o comportamiento no deseado?
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: panreyes on February 13, 2015, 10:11:01 AM
@Warrior: No lo sé, pero probablemente tenga algo que ver con que lo probé rápidamente con un código de unas 20000 lineas apróx xD
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: warrior_rockk on February 19, 2015, 10:02:26 AM
Haciendo mas pruebas con este sistema, he detectado un problema que no sé si SplinterGU puede considerar modificarlo para Bennu 2.
El compilador da error de sintaxis si defines como parámetros de una función 2 tipos de proceso distintos. Ejemplo:



function prueba(nave idNave, roca idRoca)



Da error en el segundo parámetro pidiendo una coma entre roca e idRoca. Lo que si permite es esto:


function prueba(nave idNave, idRoca)


pero toma los 2 id como procesos nave, con lo que fallará si no tienen las mismas variables publicas.




¿Es esto un fallo SplinterGU?
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: JaViS on February 19, 2015, 12:31:51 PM
No parece un fallo, parece que es como deberia ser.

Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: warrior_rockk on February 19, 2015, 05:11:00 PM
¿seguro? No digo que el segundo caso deba ser como es, que el segundo parámetro tome el tipo del primero, si no que me debería dejar el primer caso, esto es, definir dos variables de tipo de proceso distintos ¿no?
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: JaViS on February 19, 2015, 06:13:21 PM
mmm, no creo, aunque parezca ser el mismo tipo de dato, en realidad estas declarando un tipo de proceso. me parece correcta la validacion
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: Yawin on February 20, 2015, 12:48:12 AM
Yo suelo crear variables locales. No se, nunca me había planteado hacerlo así.
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: JaViS on February 20, 2015, 01:03:18 PM
y, la verdad es que teniendo variables locales no es tan util, seria verdaderamente util si se pudiese obtener con type(procesogenerico) los ids de todos los procesos que 'heredan' de este. ahi tendria mas sentido
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: warrior_rockk on February 21, 2015, 11:26:53 AM
Si, la única ventaja que intentaba buscar con las públicas es que, en términos de memoria, no me resulta eficiente porque se reserva en memoria esas variables públicas para TODOS los procesos que se creen, y , seguro que no todos los procesos usan esas variables.
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: Futu-block on March 08, 2015, 10:53:08 PM
Buf, las publicas me traen de cabeza, he de empoyarlas a conciencia...
Title: Re:Declarar proceso ficticio para herencia de variables publicas
Post by: SplinterGU on July 01, 2016, 01:03:36 PM
Quote from: warrior_rockk on February 19, 2015, 10:02:26 AM
Haciendo mas pruebas con este sistema, he detectado un problema que no sé si SplinterGU puede considerar modificarlo para Bennu 2.
El compilador da error de sintaxis si defines como parámetros de una función 2 tipos de proceso distintos. Ejemplo:



function prueba(nave idNave, roca idRoca)



Da error en el segundo parámetro pidiendo una coma entre roca e idRoca. Lo que si permite es esto:


function prueba(nave idNave, idRoca)


pero toma los 2 id como procesos nave, con lo que fallará si no tienen las mismas variables publicas.




¿Es esto un fallo SplinterGU?

me perdi esto...

deberia revisarlo, no recuerdo si permite poner parametros tipo proceso en los argumentos.