Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: laghengar on November 02, 2008, 11:38:28 PM

Title: ¿¿¿problemas con public???
Post by: laghengar on November 02, 2008, 11:38:28 PM
Hola muy buenas tengais todos compañeros. Os mando un saludo.

Ahora va mi problema, resulta que tengo un proceso llamado ente() que tiene declarada una variable public llamada fpg_criaturas, Luego este ente llama cargar_criaturas(). El problema es que cargar_criaturas necesita hacer father.fpg_criaturas=new_fpg(); pero el compilador me dice Unknow identifier ("FPG_CRIATURAS"). Yo creo que lo estoy haciendo bien.

wip 11, con el wip 15.b me ha saltado un error raro de no_found "mod_map.dll" y estoy tratando de resolverlo. Un saludo.
Title: Re: ¿¿¿problemas con public???
Post by: HaCkZJuaNN on November 03, 2008, 02:59:06 PM
Sin ofender ni nada, pero anda que no es recurrente el tema de las public y cómo os cuesta entenderlo eh? :P

El problema es que father es una variable de tipo int, que aunque almacene un id, bennu no reconoce cuáles son sus variables públicas, por lo que deberías hacer esto, declarando una variable con tipo del nombre del proceso al que referencia(aunque realmente es un int, pero de este modo bennu sabe a qué atenerse, cuáles son las variables públicas a las que puede acceder):

declare process ente()
public
...
int fpg_criaturas;
...
end
end

declare process cargar_criaturas()
private
...
ente padre;
...
end
end
...

process ente()
begin
...
cargar_criaturas();
...
end

process cargar_criaturas();
begin
...
padre = father;
padre.fpg_criaturas=new_fpg();
...
end

Puede parecer absurdo lo de padre=father; padre.fpg_criaturas=new_fpg(); pero como ya dije antes, aunque padre en el fondo es un int, al declararlo con tipo "ente", bennu sabe que va a tener una variable pública que se llama fpg_criaturas.

Un saludo.
Title: Re: ¿¿¿problemas con public???
Post by: SplinterGU on November 03, 2008, 05:55:13 PM
caramba, yo puse una respuesta a este hilo, o eso creo, vaya a saber donde la puse...
Title: Re: ¿¿¿problemas con public???
Post by: TYCO on November 03, 2008, 06:51:47 PM
Yo a veces lo tengo claro... y luego pasa dos semanas... y el tema de las Public me suena a chino XD, no sé por qué pero nunca termino de adaptarme a las formas de declararlas ni acceder a ellas. Haber si tienes tú más suerte laghengar.
Title: Re: ¿¿¿problemas con public???
Post by: SplinterGU on November 03, 2008, 07:00:04 PM
pensalo como si fuesen classes...

Uno de los grandes errores que cometi fue explicar las interioridades de este asunto y comentar que el tipo de dato "nombre-proceso", es un identificador interno de tipo/tamaño/valor "int" (no es realmente un int)... eso esta bien para los avanzados, pero para los novatos, decirle eso es un error... porque los confunde...

Voy a intentar explicarlo sin cometer ese error...

Cuando uno declara variables publicas en un proceso, el nombre de este proceso se transforma en un tipo de dato, del cual las variables publicas son los miembros... entonces, el crear un proceso con variables publicas es similar (aunque no lo mismo) a declarar un TYPE... y por consiguiente para acceder a los miembros de ese proceso (tipo de dato), tenemos que declarar una variable de ese "tipo proceso"...
Title: Re: ¿¿¿problemas con public???
Post by: TYCO on April 23, 2009, 09:59:54 AM
DECLARE PROCESS PACMAN_fantasma (x, y, tipo)
    PUBLIC
        estado=0;    // Estado de fantasma
        modelo;       // Tipo de grafico de fantasma
    END
END


No me compila, me dice que ESTADO no esta definida, cuando intento acceder desde otro proceso, help! XD
D:\PACMAN.prg:367: error: Unknown identifier ("ESTADO")

Nunca las he entendido y para una vez que las quiero poner, me estoy volviendo loco. No hay algún PRG de EJEMPLO que sea Claro y Conciso para endender rapidamente su funcionamiento??? El Post de arriba sólo consigo liarme.

PD: Añadiendo una variable local más (como x,y,z, graph, etc) ayudaría a la gente, en visual basic por ejemplo se llama "TAG", y se puede usar para almacenar un dato, y desde otro proceso poder acceder.... ahora si ya se quieren más Públicas pues que se use Declare Process.
Title: Re: ¿¿¿problemas con public???
Post by: SplinterGU on April 23, 2009, 10:17:36 AM
proba ponerle int antes de estado... a ver que pasa.
Title: Re: ¿¿¿problemas con public???
Post by: TYCO on April 23, 2009, 12:44:56 PM
Mismo error con INT delante.
Title: Re: ¿¿¿problemas con public???
Post by: splinter_work on April 23, 2009, 12:58:13 PM
caramba! me pones esa porcion de codigo y pense que te estaba fallando en la declaracion... GGGRRR... :)
Al ver el nro de linea intuyo que no esta fallando en la declaracion... (eso creo)

1) No se que version estas probando, pero en la declaracion a mi no me falla
2) Seguro a que no estas declarando la variable que contiene el ID del proceso a acceder como PACMAN_fantasma (mira que eso se dijo varias veces...)

fijate claramente el post de HaCkZJuaNN

Quote
declare process ente()
public
...
int fpg_criaturas;
...
end
end

declare process cargar_criaturas()
private
...
ente padre;
...
end
end
...

process ente()
begin
...
cargar_criaturas();
...
end

process cargar_criaturas();
begin
...
padre = father;
padre.fpg_criaturas=new_fpg();
...
end