¿Cómo declarar parámetros "variable" como en write_var ( )?

Started by Windgate, February 06, 2010, 01:13:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

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

Rein (K´)ah Al-Ghul

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



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

Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

Windgate

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

SplinterGU

no, los parametros VAR son 3 parametros en realidad... y no lo pueden emular desde un prg, es algo interno al core.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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

Drumpi

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

Windgate

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

Drumpi

No, excepción no es, ya te digo que en write_int tienes que especificar el offset.
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)

Windgate

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