Ejecutar código contenido en cadena

Started by Ulthar Kaufman, February 14, 2015, 03:20:56 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Ulthar Kaufman

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);


panreyes

Creo que no existe tal función, sino me equivoco.

SplinterGU

no, no es posible... lo tenia pensado a futuro...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Ulthar Kaufman

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

warrior_rockk

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?

Ulthar Kaufman

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.

warrior_rockk

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

Yawin

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
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

warrior_rockk

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!

Yawin

Jajaja, no hay de qué. recuerda: las estructuras son tus amigas.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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