Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Ulthar Kaufman on February 14, 2015, 03:20:56 AM

Title: Ejecutar código contenido en cadena
Post by: Ulthar Kaufman on February 14, 2015, 03:20:56 AM
Hola, he estado buscando por la documentación y por el foro pero no veo nada parecido... ¿Es posible ejecutar código que esté contenido en una variable?

En plan:

   miCodigo="wav=load_wav('a.wav');play_wav(wav,-1);";
   ejecutar(miCodigo);

Title: Re:Ejecutar código contenido en cadena
Post by: panreyes on February 14, 2015, 10:21:13 AM
Creo que no existe tal función, sino me equivoco.
Title: Re:Ejecutar código contenido en cadena
Post by: SplinterGU on February 14, 2015, 09:08:40 PM
no, no es posible... lo tenia pensado a futuro...
Title: Re:Ejecutar código contenido en cadena
Post by: Ulthar Kaufman on February 15, 2015, 11:36:51 AM
Ok, gracias por la info.

Sería genial para poder definir partes de juegos en tablas de structs o incluso en XMLs y poder incrustar código en campos a modo de scripts. Sería perfecto para las aventuras gráficas (que es precisamente lo que intentaba hacer) :P
Title: Re:Ejecutar código contenido en cadena
Post by: warrior_rockk on February 17, 2015, 06:28:41 AM
Tienes que tener en cuenta que lo que quieres hacer, que suele llamarse código "inline", no se podría modificar en runtime. Es decir, y si no me equivoco, el compilador sustituiría las cadenas de texto de código, a código, con lo que no podrías una vez el juego esté en marcha modificar o incluir o ingresas código inline nuevo. Con lo cual, si lo que quieres es definir partes del juego, puedes hacer usos de los includes y crear varios archivos ¿no?
Title: Re:Ejecutar código contenido en cadena
Post by: Ulthar Kaufman on February 18, 2015, 07:14:09 PM
Sip, si la intención era solo por separar lo que es la aventura del motor, no por modificar nada en tiempo de ejecución. Como bien dices se puede hacer con includes, pero en el caso de una aventura gráfica, con varios eventos por objetos, y un buen número de objetos entre objetos normales, objetos de inventario, pnjs y 'zonas calientes', te puedes encontrar fácilmente con más de 70 miniarchivos, lo que no es muy cómodo de manejar.

Mientras escribía eso he pensado en hacerme una mini aplicación y tabla en VFP (con el que trabajo habitualmente) que genere el prg con la definición y asignación de los structs (para meterlos con un include también) y que genere también los mini prgs asociados a cada evento de objeto, así no tendría que estar editando miles de archivos. lo tendría todo definido en una tabla dbf y solo tendría que generarlo cada vez que cambie algo.

Si la cosa progresa y no me quedo atascado, abriré un post en el subforo de proyectos con mis progresos.
Gracias por la info.
Title: Re:Ejecutar código contenido en cadena
Post by: warrior_rockk on March 16, 2015, 10:13:43 AM
AL hilo de este topic, ¿hay alguna manera de declarar un define "multilínea". Es decir, tengo varios procesos que declaran variables publicas, y para todos son las mismas variables. Me gustaría poder modificar esas
declaraciones en un único sitio a la vez. Algo así:


#define  def_public   int dato1;  int dato2;


declare process proceso()
public
def_public
end
Title: Re:Ejecutar código contenido en cadena
Post by: Yawin on March 16, 2015, 06:40:20 PM
Sí, tienes "type". Por ejemplo:


type identidad
        int dni;
        string nombre, apellido1, apellido2;
end

process persona()
        public
                identidad i;
        end
        begin
                i.nombre="pepito";
                i.apellido1="flores";
                i.apellido2="feo";
                i.dni=44354623"
        end
process main()
        private
                persona p;
        end
        begin
                p=persona();
                say(p.i.nombre);
        end
Title: Re:Ejecutar código contenido en cadena
Post by: warrior_rockk on March 17, 2015, 09:59:29 AM
jeje muy ingenioso Yawin. No se me había ocurrido esa aproximación y de hecho, aunque tendría que cambiar todo el código para que las referencias a las públicas las haga a través del type, me parece una solución de lo mas elegante y correcta. Karma for you! Muchas gracias!
Title: Re:Ejecutar código contenido en cadena
Post by: Yawin on March 17, 2015, 10:38:33 AM
Jajaja, no hay de qué. recuerda: las estructuras son tus amigas.