Autor Tema: Declarar proceso ficticio para herencia de variables publicas  (Leído 2304 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Conectado warrior_rockk

  • Full Member
  • ***
  • Mensajes: 224
  • Karma: 8
    • Ver Perfil
Declarar proceso ficticio para herencia de variables publicas
« en: Febrero 12, 2015, 07:15:33 am »
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:


Código: [Seleccionar]
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...




Conectado JaViS

  • Global Moderator
  • Hero Member
  • *****
  • Mensajes: 1111
  • Karma: 19
  • Sexo: Masculino
    • Ver Perfil
    • Anarkade
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #1 en: Febrero 12, 2015, 09:39:38 am »
Muy bueno!! muy inteligente, es como usar interfaces!
Working on Anarkade. A couch multiplayer 2D shooter.

Conectado panreyes

  • Administrator
  • Hero Member
  • *****
  • Mensajes: 1994
  • Karma: 63
  • Sexo: Masculino
    • Ver Perfil
    • panreyes.com
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #2 en: Febrero 12, 2015, 10:53:21 am »
Interesante :!

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


----


[size=78%]Aunque en mi caso no me ha funcionado xD[/size]
« última modificación: Febrero 12, 2015, 11:03:24 am por PiXeL »

Desconectado emov2k4

  • Full Member
  • ***
  • Mensajes: 224
  • Karma: 4
  • Sexo: Masculino
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #3 en: Febrero 12, 2015, 12:14:11 pm »
hace dos dias necesitaba esto...  :o
al final lo solucione de otra forma... pero esto es menos lio...

Conectado warrior_rockk

  • Full Member
  • ***
  • Mensajes: 224
  • Karma: 8
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #4 en: Febrero 13, 2015, 12: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?

Conectado panreyes

  • Administrator
  • Hero Member
  • *****
  • Mensajes: 1994
  • Karma: 63
  • Sexo: Masculino
    • Ver Perfil
    • panreyes.com
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #5 en: Febrero 13, 2015, 02: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

Conectado warrior_rockk

  • Full Member
  • ***
  • Mensajes: 224
  • Karma: 8
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #6 en: Febrero 19, 2015, 02: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:


Código: [Seleccionar]
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:


Código: [Seleccionar]
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?

Conectado JaViS

  • Global Moderator
  • Hero Member
  • *****
  • Mensajes: 1111
  • Karma: 19
  • Sexo: Masculino
    • Ver Perfil
    • Anarkade
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #7 en: Febrero 19, 2015, 04:31:51 am »
No parece un fallo, parece que es como deberia ser.

Working on Anarkade. A couch multiplayer 2D shooter.

Conectado warrior_rockk

  • Full Member
  • ***
  • Mensajes: 224
  • Karma: 8
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #8 en: Febrero 19, 2015, 09:11:00 am »
¿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?

Conectado JaViS

  • Global Moderator
  • Hero Member
  • *****
  • Mensajes: 1111
  • Karma: 19
  • Sexo: Masculino
    • Ver Perfil
    • Anarkade
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #9 en: Febrero 19, 2015, 10:13:21 am »
mmm, no creo, aunque parezca ser el mismo tipo de dato, en realidad estas declarando un tipo de proceso. me parece correcta la validacion
Working on Anarkade. A couch multiplayer 2D shooter.

Desconectado Yawin

  • Hero Member
  • *****
  • Mensajes: 1088
  • Karma: 44
  • Sexo: Masculino
  • La primera persona que ha "demosceneado" en Bennu.
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #10 en: Febrero 19, 2015, 04:48:12 pm »
Yo suelo crear variables locales. No se, nunca me había planteado hacerlo así.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Conectado JaViS

  • Global Moderator
  • Hero Member
  • *****
  • Mensajes: 1111
  • Karma: 19
  • Sexo: Masculino
    • Ver Perfil
    • Anarkade
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #11 en: Febrero 20, 2015, 05:03:18 am »
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
Working on Anarkade. A couch multiplayer 2D shooter.

Conectado warrior_rockk

  • Full Member
  • ***
  • Mensajes: 224
  • Karma: 8
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #12 en: Febrero 21, 2015, 03: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.

Conectado Futu-block

  • Hero Member
  • *****
  • Mensajes: 2535
  • Karma: 32
  • Sexo: Masculino
  • Superviviente marciano
    • Ver Perfil
    • futublock
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #13 en: Marzo 08, 2015, 02:53:08 pm »
Buf, las publicas me traen de cabeza, he de empoyarlas a conciencia...


Conectado SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12425
  • Karma: 366
  • Sexo: Masculino
    • Ver Perfil
Re:Declarar proceso ficticio para herencia de variables publicas
« Respuesta #14 en: Julio 01, 2016, 05:03:36 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:


Código: [Seleccionar]
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:


Código: [Seleccionar]
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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2