Public, primer intento...

Started by Futu-block, March 04, 2011, 10:39:06 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Futu-block

Vale, tengo una variable que la quiero hacer publica para en otro proceso hacerle un switch

codigos:
[code language="bennu"]
declare process coco(x,y)
    public
        int pulsa ;
        int grafico = 1;
    end
end
process coco(x,y)
begin
    loop
        graph = grafico;
etc...[/code]

y en el nuevo proceso llamado animacion()
[code language="bennu"]
process animacion()
begin
    loop
        switch (pulsa)
            case 1:
                tal y cual;
            end
        end
        switch (pulsa)
            case 2:
                tal y cual;
            end
        end



etc...
[/code]

total, que me dá error y creo que el switch ese no está muy bien echo...

Drumpi

Claro, como que no has definido pulsa en animación :D :D :D
En animación, para acceder a "pulsa" del proceso "coco" necesitas declarar primero una variable que almacene la ID del proceso "coco". Por ejemplo ID_COCO. Acceder a las variables públicas se hace de la misma forma que en una variable local, como X, Y, GRAPH...
Lo normal es que esa variable sea de tipo int, pero lo que hace diferente a las públicas es que dichas variables serán de un tipo especial, en concreto, el nombre del proceso (sin paréntesis).

O sea, que lo que te hace falta es declarar en "animación" la variable privada:

private
coco id_coco;

Luego almacenar la ID del proceso en cuestión (por ejemplo: id_coco=get_id(type coco); )

Y ya podrás acceder a pulsa usando "id_coco.pulsa".
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)

Fede

Exactamente no veo donde falla. Si te corre prisa pásame el código.

De todas formas ¿Por qué no metes los cases en el mismo switch?

Sería así (De la wiki):

switch ( <value> )
  case <value1>:
         // code1
  end
  case <value2>:
        // code2
  end
  default:
  // code3
  end
end

EDITO: Drumpi samadelantao.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Futu-block

#3
Quote from: Drumpi on March 04, 2011, 02:17:11 PM
Claro, como que no has definido pulsa en animación :D :D :D
En animación, para acceder a "pulsa" del proceso "coco" necesitas declarar primero una variable que almacene la ID del proceso "coco". Por ejemplo ID_COCO. Acceder a las variables públicas se hace de la misma forma que en una variable local, como X, Y, GRAPH...
Lo normal es que esa variable sea de tipo int, pero lo que hace diferente a las públicas es que dichas variables serán de un tipo especial, en concreto, el nombre del proceso (sin paréntesis).

O sea, que lo que te hace falta es declarar en "animación" la variable privada:

private
coco id_coco;

Luego almacenar la ID del proceso en cuestión (por ejemplo: id_coco=get_id(type coco); )

Y ya podrás acceder a pulsa usando "id_coco.pulsa".

lo de:
[code language="bennu"]private
coco id_coco;[/code]
no se ha de poner:
[code language="bennu" options="singleline"]coco = id_coco[/code]
en??




edito:
bueno, y en que se diferencia de global??, casi que prefiero global...

osk

Hombre, una variable global sólo puede valer un valor único para todo el programa, una variable pública puede valer un valor diferente por cada proceso donde se haya definido.

DCelso

Exacto, local sirve para no machacar el valor de la variable en distintos procesos, osea como las variables x, y, z, graph, file, etc.
cada proceso tiene su propio valor de la variable.

Global sirve para compartir información entre procesos desconociendo de quien procede o quien cambió su valor, simplemente sabiendo para qué sirve el valor, por ejemplo fullscreen o OS_ID.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

#6
Quote from: Futublock on March 04, 2011, 03:01:05 PM
Quote from: Drumpi on March 04, 2011, 02:17:11 PM
Claro, como que no has definido pulsa en animación :D :D :D
En animación, para acceder a "pulsa" del proceso "coco" necesitas declarar primero una variable que almacene la ID del proceso "coco". Por ejemplo ID_COCO. Acceder a las variables públicas se hace de la misma forma que en una variable local, como X, Y, GRAPH...
Lo normal es que esa variable sea de tipo int, pero lo que hace diferente a las públicas es que dichas variables serán de un tipo especial, en concreto, el nombre del proceso (sin paréntesis).

O sea, que lo que te hace falta es declarar en "animación" la variable privada:

private
coco id_coco;

Luego almacenar la ID del proceso en cuestión (por ejemplo: id_coco=get_id(type coco); )

Y ya podrás acceder a pulsa usando "id_coco.pulsa".

lo de:
[code language="bennu"]private
coco id_coco;[/code]
no se ha de poner:
[code language="bennu" options="singleline"]coco = id_coco[/code]
en??

No, porque estás definiendo una nueva variable privada, de ahí el private.
La asignación de la ID del proceso te la he puesto después, con el get_id (puedes usar get_id o una variable donde la tengas almacenada, pero debes asignarla a la variable que yo he llamado id_coco, coco es el tipo de la variable id_coco, como te he dicho).

Quote from: Futublock on March 04, 2011, 03:01:05 PMedito:
bueno, y en que se diferencia de global??, casi que prefiero global...

Como dicen por arriba, una global es una única variable para todos los procesos, con una pública cada proceso tiene la suya, como pasa con las locales.
La diferencia con las locales es que TODOS los procesos tienen su propia variable, con las locals sólo los procesos de ese tipo (o con ese nombre, para que nos entendamos) tienen esa variable.
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)

DCelso

Quote from: Drumpi on March 05, 2011, 01:23:51 AM
Quote from: Futublock on March 04, 2011, 03:01:05 PM
Quote from: Drumpi on March 04, 2011, 02:17:11 PM
Claro, como que no has definido pulsa en animación :D :D :D
En animación, para acceder a "pulsa" del proceso "coco" necesitas declarar primero una variable que almacene la ID del proceso "coco". Por ejemplo ID_COCO. Acceder a las variables públicas se hace de la misma forma que en una variable local, como X, Y, GRAPH...
Lo normal es que esa variable sea de tipo int, pero lo que hace diferente a las públicas es que dichas variables serán de un tipo especial, en concreto, el nombre del proceso (sin paréntesis).

O sea, que lo que te hace falta es declarar en "animación" la variable privada:

private
coco id_coco;

Luego almacenar la ID del proceso en cuestión (por ejemplo: id_coco=get_id(type coco); )

Y ya podrás acceder a pulsa usando "id_coco.pulsa".

lo de:
[code language="bennu"]private
coco id_coco;[/code]
no se ha de poner:
[code language="bennu" options="singleline"]coco = id_coco[/code]
en??

No, porque estás definiendo una nueva variable privada, de ahí el private.
La asignación de la ID del proceso te la he puesto después, con el get_id (puedes usar get_id o una variable donde la tengas almacenada, pero debes asignarla a la variable que yo he llamado id_coco, coco es el tipo de la variable id_coco, como te he dicho).

Quote from: Futublock on March 04, 2011, 03:01:05 PMedito:
bueno, y en que se diferencia de global??, casi que prefiero global...

Como dicen por arriba, una global es una única variable para todos los procesos, con una pública cada proceso tiene la suya, como pasa con las locales.
La diferencia con las locales es que TODOS los procesos tienen su propia variable, con las locals private sólo los procesos de ese tipo (o con ese nombre, para que nos entendamos) tienen esa variable.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Futu-block

vale, ya lo voy cogiendo, en vez de int uso el coco...

como me he puesto a otra cosa ya daré mas caña cuando me ponga a ello

Drumpi

Quote from: DCelso on March 05, 2011, 10:52:11 AM
Quote from: Drumpi on March 05, 2011, 01:23:51 AM
Quote from: Futublock on March 04, 2011, 03:01:05 PM
Quote from: Drumpi on March 04, 2011, 02:17:11 PM
Claro, como que no has definido pulsa en animación :D :D :D
En animación, para acceder a "pulsa" del proceso "coco" necesitas declarar primero una variable que almacene la ID del proceso "coco". Por ejemplo ID_COCO. Acceder a las variables públicas se hace de la misma forma que en una variable local, como X, Y, GRAPH...
Lo normal es que esa variable sea de tipo int, pero lo que hace diferente a las públicas es que dichas variables serán de un tipo especial, en concreto, el nombre del proceso (sin paréntesis).

O sea, que lo que te hace falta es declarar en "animación" la variable privada:

private
coco id_coco;

Luego almacenar la ID del proceso en cuestión (por ejemplo: id_coco=get_id(type coco); )

Y ya podrás acceder a pulsa usando "id_coco.pulsa".

lo de:
[code language="bennu"]private
coco id_coco;[/code]
no se ha de poner:
[code language="bennu" options="singleline"]coco = id_coco[/code]
en??

No, porque estás definiendo una nueva variable privada, de ahí el private.
La asignación de la ID del proceso te la he puesto después, con el get_id (puedes usar get_id o una variable donde la tengas almacenada, pero debes asignarla a la variable que yo he llamado id_coco, coco es el tipo de la variable id_coco, como te he dicho).

Quote from: Futublock on March 04, 2011, 03:01:05 PMedito:
bueno, y en que se diferencia de global??, casi que prefiero global...

Como dicen por arriba, una global es una única variable para todos los procesos, con una pública cada proceso tiene la suya, como pasa con las locales.
La diferencia con las locales es que TODOS los procesos tienen su propia variable, con las locals private public sólo los procesos de ese tipo (o con ese nombre, para que nos entendamos) tienen esa variable.

;D
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)

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Futu-block

buf como te estas rallando, diyei
je je je

Futu-block

#12
bueno, dejemos la polladas que pa eso está mi blog, :D

al lio
Necesito que cada proceso nuevo se cree con sus nuevas variables en cuestion de direccion destino y final, si hago las variables globales cada vez que cree un nuevo proceso me hará cosas mu raritas  :o
he descubierto por fin la utilidad de  :o public

el proceso en cuestion es por ejemplo carro()
carro tiene los siguientes cosas dentro del parentesis: x, y, direccion, salida y llegada

entonces el proceso quedaria asi:
[code language="bennu"]
declare process carro(x, y, direccion, salida, llegada)
   public
       int direccion, salida, llegada;
   end
end

process carro(x, y, direccion, salida, llegada)
private

int direccion, salida, llegada;
carro id_carro; // esto ya lo endiendo perfect

begin
   id_fant1 = get_id (type fant1); //esto ahora mismo para el ejemplo igual no me sirve
   graph = tal y tal;
   loop
       tal y pascual...
[/code]

pues eso lo que no tengo claro,
declararlo lo tengo que declarar en el mismo proceso ¿no? eso lo tengo claro, creo
me falla porque estoy haciendo algo mal que no entiendo y es relacionado a las variables: direccion, salida, llegada de la tercera linea

que coñazo de public...

Windgate

Aiva el copón...

No puedes tener variables public, private y parámetro de función con el mismo nombre todas :S

Pon un nombre a las public, aunque sea public_destino, a las private llámalas destino si quieres y a los parámetros ponles parametros_destino.

Ahora mismo no recuerdo porque hace meses que pelee duro con los public hasta controlarlos bien controlados, pero había problemas de ese tipo, recuerdo sobre todo que los parametros tuve que renombrarlos y luego hacer cosas como:

public_destino = parametro_destino;

Para ir recibiendo los valores.

¿Te has mirado mi tutorial de PUBLIC, no?  ---> http://trinit.es/temario/Tema%2039%20PUBLIC.pdf
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Futu-block

cienes y cienes de veces, volveré a intentarlo...