Variables Publicas

Started by Milton884, March 15, 2011, 12:18:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Milton884

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...

Drumpi

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)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

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)

Milton884

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]

Milton884

Probe tambien declarando el proceso con la variable publica como:
DECLARE PROCESS protagonista();

Pero aun asi NO anda...

Ayuda

SplinterGU

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
Download Lastest BennuGD Release: http://www.bennugd.org/node/2