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);
Creo que no existe tal función, sino me equivoco.
no, no es posible... lo tenia pensado a futuro...
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
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?
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.
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
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
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!
Jajaja, no hay de qué. recuerda: las estructuras son tus amigas.