Como puedo acceder a una variable de un proceso, desde otro proceso?
supuestamente es haciendola publica...
probe declarandola asi:
PROCESS protagonista();
PUBLIC
int disparando=0;
.........
Pero cuando trato de ejecutar, me dice que disparando No existe.. (cuando lo uso en el code).
tmb trate asi... segun un manual de Bennu:
DECLARE PROCESS protagonista();
PUBLIC
int disparando=0;
END
Pero tampoco...
Hay varios hilos sobre ello, como por ejemplo:
http://forum.bennugd.org/index.php?topic=2093.0
Ojo, con las PUBLIC es importante hacer el declare ANTES de usarlas, hay que tener cuidado en qué parte del código se escribe (un buen consejo es hacer las declare y la definición de variables globales y locales en un fichero aparte, e incluirlas al inicio del programa)
dispara otra vez que ya las domino a la perfeccion y me gustaria hacer un tuto for dummies, de eso y de demas cosas basicas que preguntan en la mesa de ayuda...
mira me pongo a hacerlo ahora mismo, se me han cruzado los cables; pero pregunta pregunta
(drumpi K++:D no se lo digas a naide :D)
Gracias por la info pero aun no puedo hacer andar la variable publica
Resalto en negrita los codigos importantes del uso de public
[code language="bennu"]PROGRAM videojuego;
INCLUDE "DLL\import.prg"; //Incluye las DLL necesarias para que todo funcione
BEGIN
set_mode(800,600,32,MODE_WINDOW); //Resolución de pantalla a 800x600 píxel, 32 bits de color y en modo ventana
load_fpg("images/sonic.fpg"); //Carga el fichero para gráficos sonic.fpg de la carpeta images
graph=1; //Establece el gráfico 1 del fpg
protagonista();
enemigo();
LOOP //A partir de aquí repetiremos siempre las siguiente instrucciones
IF (key(_esc)) //Condición: Si se pulsa la tecla _esc
exit(0); //Salimos del juego
END //Fin de la condición
FRAME; //Mostramos el resultado por pantalla
END //Fin de las instrucciones que se repiten siempre
END //Fin del programa
PROCESS protagonista();
PUBLIC
int var1=600;
BEGIN
graph=1; //Establece el gráfico 1 del fpg
x=400; //Establece la posición horizontal en el píxel 400 de la pantalla
y=100; //Establece la posición vertical en el píxel 300 de la pantalla
LOOP //A partir de aquí repetiremos siempre las siguiente instrucciones
IF (key(_left)) //Condición: Si se pulsa la tecla _esc
x=x-10; //Salimos del juego
END
FRAME; //Mostramos el resultado por pantalla
END //Fin de las instrucciones que se repiten siempre
END
PROCESS disparo();
BEGIN
graph=20;
x=protagonista.var1; //uso de variable publica de protagonista... (var 1)
y=father.y;
LOOP
frame;
END
END
PROCESS enemigo();
BEGIN
graph=10; //Establece el gráfico 1 del fpg
x=100; //Establece la posición horizontal en el píxel 400 de la pantalla
y=100; //Establece la posición vertical en el píxel 300 de la pantalla
LOOP //A partir de aquí repetiremos siempre las siguiente instrucciones
IF (key(_left)) //Condición: Si se pulsa la tecla _esc
x=x-10; //Salimos del juego
END
if (key(_enter))
disparo();
END
FRAME; //Mostramos el resultado por pantalla
END //Fin de las instrucciones que se repiten siempre
END[/code]
Probe tambien declarando el proceso con la variable publica como:
DECLARE PROCESS protagonista();
Pero aun asi NO anda...
Ayuda
protagonista es un proceso no es una variable, por eso no te funciona.
proba esto
PROGRAM videojuego;
INCLUDE "DLL\import.prg"; //Incluye las DLL necesarias para que todo funcione
PROCESS protagonista();
PUBLIC
int var1=600;
BEGIN
graph=1; //Establece el gráfico 1 del fpg
x=400; //Establece la posición horizontal en el píxel 400 de la pantalla
y=100; //Establece la posición vertical en el píxel 300 de la pantalla
LOOP //A partir de aquí repetiremos siempre las siguiente instrucciones
IF (key(_left)) //Condición: Si se pulsa la tecla _esc
x=x-10; //Salimos del juego
END
FRAME; //Mostramos el resultado por pantalla
END //Fin de las instrucciones que se repiten siempre
END
global
protagonista prota;
end
BEGIN
set_mode(800,600,32,MODE_WINDOW); //Resolución de pantalla a 800x600 píxel, 32 bits de color y en modo ventana
load_fpg("images/sonic.fpg"); //Carga el fichero para gráficos sonic.fpg de la carpeta images
graph=1; //Establece el gráfico 1 del fpg
prota=protagonista();
enemigo();
LOOP //A partir de aquí repetiremos siempre las siguiente instrucciones
IF (key(_esc)) //Condición: Si se pulsa la tecla _esc
exit(0); //Salimos del juego
END //Fin de la condición
FRAME; //Mostramos el resultado por pantalla
END //Fin de las instrucciones que se repiten siempre
END //Fin del programa
PROCESS disparo();
BEGIN
graph=20;
x=prota.var1; //uso de variable publica de protagonista... (var 1)
y=father.y;
LOOP
frame;
END
END
PROCESS enemigo();
BEGIN
graph=10; //Establece el gráfico 1 del fpg
x=100; //Establece la posición horizontal en el píxel 400 de la pantalla
y=100; //Establece la posición vertical en el píxel 300 de la pantalla
LOOP //A partir de aquí repetiremos siempre las siguiente instrucciones
IF (key(_left)) //Condición: Si se pulsa la tecla _esc
x=x-10; //Salimos del juego
END
if (key(_enter))
disparo();
END
FRAME; //Mostramos el resultado por pantalla
END //Fin de las instrucciones que se repiten siempre
END