Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Windgate on February 06, 2010, 01:13:01 PM

Title: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Windgate on February 06, 2010, 01:13:01 PM
Ya sabéis que write_var ( ) tiene un comportamiento "un poco especial", ya que se le pasa como parámetro una variable sin ninguna sintaxis especial, y en lugar de trabajar con ella como una copia o parámetro por valor trabaja con ella como un parámetro por referencia.

El caso es que quiero hacer una función sencillita en 3D que sirva para escribir el valor de una variable en la GUI de forma que se autorefresque el valor, lo mismo que write_var ( ), pero en 3D.

¿Cómo debería declarar la cabecera de la función para que podamos pasar la variable igual que en write_var ( ) sin necesidad de poner el prefijo & y declarar que la función recibe POINTER?

Me interesa que NO se use & ya que quiero que sea fácil y amigable de usar, y todos sabemos que los punteros al principio escuecen.
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Rein (K´)ah Al-Ghul on February 06, 2010, 03:09:59 PM
Ejemplo de la wiki:

import "mod_text"
import "mod_key"

Global
    my_integer=0;
    string my_string="Bennu Game Development";
End

Process Main()
Begin

    write_var(0,0,0,0,my_string);
    write_var(0,320/2,200/2,4,my_integer);

    Repeat
        my_integer=rand(1,1000);
        frame;
    Until(key(_ESC))

End


(http://wiki.bennugd.org/images/a/a0/Write_var.png)
(offtopic: porque la imagenen dice fenix?? XD)

Por lo que veo recive un pointer, se le pasa cualquier variables y la recibe como la direccion de la misma
y luego imprime el contenido de esa posicion de memoria...

es eso o el wiki esta mal y deberia ir & u offset...
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Windgate on February 06, 2010, 04:21:20 PM
Es extraño... Lo probaré a ver si va bien, la idea que tengo es aliviar un poco la tortura que supone usar las funciones de texto en GUI con Bennu 3D. Y nada más sencillo que emular exactamente el comportamiento de write_var ;)
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: SplinterGU on February 06, 2010, 06:29:32 PM
no, los parametros VAR son 3 parametros en realidad... y no lo pueden emular desde un prg, es algo interno al core.
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Windgate on February 06, 2010, 09:12:39 PM
Mierda,
entonces no queda otra opción que trabajar con punteros, aunque la verdad es que le va a quitar bastante sencillez al módulo.

Tendrá que quedar: write_var ( 0 , 0 , 0 , &vida );

En lugar de: write_var ( 0 , 0 , 0 , vida);

:(

Nótese que me salto un parámetro porque la GUI de Bennu 3D no tiene un valor de alineación.

Así dejaré la cosa de momento hasta que encuentre otra opción más simple, aunque me temo que no la habrá xD
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Drumpi on February 07, 2010, 04:13:35 AM
Pues es la sintaxis que tiene write_int, y la que llevo usando desde siempre.
Y también es el método que tengo en el motor de tiles para trabajar con mapas cargados en memoria y otras estructuras complejas.
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Windgate on February 07, 2010, 06:50:10 AM
Sí, es una sintaxis sin mayor complicación, pero mi idea con 3Dit era que fuese 100% idéntico a Bennu 2D. Por ahora ya han salido algunas excepciones, como esta por ejemplo, pero va bien la cosa :D
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Drumpi on February 08, 2010, 02:09:12 AM
No, excepción no es, ya te digo que en write_int tienes que especificar el offset.
Title: Re: ¿Cómo declarar parámetros "variable" como en write_var ( )?
Post by: Windgate on February 08, 2010, 11:35:31 AM
Quote from: Drumpi on February 08, 2010, 02:09:12 AM
No, excepción no es, ya te digo que en write_int tienes que especificar el offset.

No me refiero a eso, me refiero a mi propio programita, que pretende tener sintaxis idéntica a Bennu 2D pero me empiezan a salir algunos impedimentos, sin mayor complicación.