Estoy tratando de realizar unas funciones que abran un archivo y interpreten su contenido.
Código Texto Plano:
Ver original
[CARGA] //Declaro las variables :D x = 4 y = VERDADERO [FIN] [FRAME] Colisiones(y) Gravedad(VERDADERO) yo._x += x [FIN]
bueno, la cuestion es que la función el interprete debe reconocer lo que esta dentro de [CARGA] y guardar las variables en una clase var. (esto esta hecho).
ahora el problema que me atasco es aquí, necesito que reconozca lo que hay dentro de [FRAME] ... ... .. [FIN] y eso se ejecute. (se ejecuta cada vez que se llama al timer declarado en el programa)
Pues estoy bastante trabado, pensando ¿cual seria la mejor forma de detectar las funciones y que detecte las variables a las que llamo?.
Por ejemplo, se me ocurrío hacer unas clases algo asi.
Código C++:
...Ver original
class Variable { private: char* nombre; public: int val; }; class Funcion { private: int id; //dependiendo del id ejecuta diferente acción int value; //Valor o ID de variable public: bool is_var; //si el parametro dentro es una variable o no char* getName() { return Nombre; } int getID() { return ID; } }; class Codigo { private: Variable *vars; Funcion *funcs; int t_vars; //Cantidad de variables int t_funcs; //Cantidad de funciones public: int getVarID(char*); /*Funcion que se encarga de conseguir el ID de una var atravez de su nombre*/ void Add_var(char*, int); void Add_func(int, bool, int); void Ejecutar(); }
Suponiendo que ya diseñe las funciones add_var, add_func, getVarID;
y suponiendo que ya cargue todos los datos en las variables y las funciones.
¿Cual seria el mejor método luego para ejecutar estas mismas?, yo pensé algo así pero es demasiado desprolijo creo.
...
Código C++:
Ver original
void Codigo::Ejecutar() { for (int x=0; x <= t_funcs) { int t_var = funcs[x].value; if (funcs[x].is_var) t_var = vars[funcs[x].value].val; switch (funcs[x].getID) { case 1: //Hacer lo que se supone que se hace si la funcion es ID 1 break; case 1: //Hacer lo que se supone que se hace si la funcion es ID 2 break; } } return; }
Pero este método me parece Demasiado digamos, des prolijo e incomodo para utilizar, me gustaría saber si me pueden dar un pequeño empujón, se que no hay que pedir que le hagan el trabajo a uno, pero solo pido alguna sugerencia.