Autor Tema: polimorfismo en variables públicas  (Leído 1405 veces)

Prg

  • Hero Member
  • *****
  • Mensajes: 1569
  • Karma: 140
    • Mi pagina
polimorfismo en variables públicas
« en: Noviembre 02, 2010, 02:51:55 am »
Hola, recientemente estaba trabajando con varias funciones que tiene variable públicas y me doy cuenta que lo conveniente que sería poder hacer algo como esto:

declare interfaz enemigo();
private
estado,valentía, energía, fuerza, resistencia;
end
end

process araña(...) implements enemigo;
begin
...
end

process gusano(...) implements enemigo;
begin
...
end

process cienpies(...) implements enemigo;
begin
...
end

...
otros 10 enemigos que implementan la interfaz enemigo
...

...
procesos que no requieren tener ninguna de las variables públicas de los enemigos que nos hacen pensar en no usar locales
...

process protagonista(...);
private
enemigo enem;
begin
loop
     if (enemigo=collision(type araña))
        ener-=enemigo.fuerza;
     end

    if (enemigo=collision(type gusano))
        ener-=enemigo.fuerza;
    end

   if (enemigo=collision(type cienpies))
        ener-=enemigo.fuerza;
    end
...
frame;
end
end


esta es una sugerencia a largo plazo.
lo que hago actualmente es una variable de cada tipo de dato, hay otra forma?


por otro lado, hay alguna forma de declarar los parámetros de alguna función como públicos?, sería bueno poderlo hacer.

gracias y saludos

pd: espero no haber sugerido una barbaridad XD
« última modificación: Noviembre 02, 2010, 02:53:53 am por Prg »
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: polimorfismo en variables públicas
« Respuesta #1 en: Noviembre 02, 2010, 06:25:59 am »
Tu idea de herencia es muy buena, ahora mismo puedes usar INCLUDE de los fragmentos de código a heredar, el funcionamiento final sería muy similar, pero pierdes la posibilidad de tener una única variable de tipo enemigo para todos ellos :(

Sobre los parámetros PUBLIC no se puede, pero puedes usar una variable intermedia como parámetro y luego asignar.
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

  • Hero Member
  • *****
  • Mensajes: 12887
  • Karma: 377
Re: polimorfismo en variables públicas
« Respuesta #2 en: Noviembre 02, 2010, 06:54:55 am »
no esta mal la idea, pero hay algunos problemas:

1) las variables privadas no se pueden acceder desde otro proceso
2) eso deberia ser una declaracion, o sea, que esas serian las unicas variables (solo en el caso de las publicas) que tiene el proceso que use esa interfaz, se complicaria un poco el tema de variables.

entiendo la necesidad y me gusta, pero se necesita pensar bastante en como implementarlo sin que no de problemas o la otra es reescribir todo el core del compilador y del interprete, cosas que me parece un poco loco.

pero bueno, anotado y tendre en mete alguna manera de heredad cosas.

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

Prg

  • Hero Member
  • *****
  • Mensajes: 1569
  • Karma: 140
    • Mi pagina
Re: polimorfismo en variables públicas
« Respuesta #3 en: Noviembre 02, 2010, 03:28:47 pm »
Citar
pero bueno, anotado y tendre en mete alguna manera de heredad cosas.
excelente, gracias :)

Citar
1) las variables privadas no se pueden acceder desde otro proceso

se me pasó, ahí son públicas

[code language="bennu"]
declare interfaz enemigo();
private
public int estado;
public int valentía;
public int energía;
public int fuerza;
public int resistencia;
end
end[/code]

gracias, y saludos

en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)