Bueno la cuestión es que estoy con un proyecto y estoy atascado en una parte.
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 originalclass 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 originalvoid 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.