Bennu Game Development

Foros en Español => General => Topic started by: Danielo515 on September 25, 2008, 09:49:32 PM

Title: write_string ¿puede funcionar de esta manera?
Post by: Danielo515 on September 25, 2008, 09:49:32 PM
Me preguntaba si se puede de algún modo conseguir que el comportamiento de write string pudiera ser como el siguiente

[code language="bennu"]private[
string texto[]="a","b";
begin
write_string(0,100,100,4,&texto);

loop
         if(algo)i=0;end
         if(otra)i=1;end
frame;
end[/code]

y que el texto que aparece se modifique en funcion de la variable i;
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: SplinterGU on September 25, 2008, 09:58:02 PM
no, no se puede... tecnicamente no es posible... pensa solo en la sintaxis de lo que esas escribiendo... "&texto[ i ]"... "&"... "address"... le estas pasando un address de memoria, y eso es lo que imprime, es imposible...
otra cosa diferente es si usas una variable XXX y luego le asignas a esta el valor de un vector segun necesidad...
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: kim-elet-o on September 25, 2008, 10:10:43 PM
Si y muy facil:  ;) ;) ;)

[code language="bennu"]
private
string texto[]="a","b";
string textoVar;
begin
write_string(0,100,100,4,&textoVar);

loop
       if(algo)TextoVar = Texto[0];end
       if(otra)TextoVar = Texto[1];end
frame;
end
[/code]

"yasta!".
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: Danielo515 on September 25, 2008, 10:24:17 PM
Mas facil aún no?

[code language="bennu"]
private
string texto[]="a","b";
string textoVar;
begin
write_string(0,100,100,4,&textoVar);

loop
       if(algo)i=0;end
       if(otra)i=1;end

TextoVar = Texto;end

frame;
end
[/code]

Gracias kim ¿puedo llamarte kim? ja ja ja
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: kim-elet-o on September 25, 2008, 10:41:29 PM
Jejejeje si puedes, de hecho es mi nombre de pila.
Si, pero la forma en que opera bennu no es posible hacerlo asi, la instruccion recibe como parametro la direccion de una variable, y no un rango de direcciones, aunque podrias inventarte un proceso que emulara el funcionamiento del write como tu quieres, añadiendo una variable que tuviera la direccion de la variable de control de rango, jejejeje, no te voy a decir como hacerla, por que quiero que la rumies un poquitin antes, digamos que te lo dejo como ejercicio, jejejejeje.

Title: Re: write_string ¿puede funcionar de esta manera?
Post by: SplinterGU on September 25, 2008, 10:48:22 PM
Quote from: SplinterGU on September 25, 2008, 09:58:02 PM
otra cosa diferente es si usas una variable XXX y luego le asignas a esta el valor de un vector segun necesidad...
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: Danielo515 on September 26, 2008, 12:31:33 AM
Por lo que yo entiendo
Texto[0]="a"

por lo que

[code language="bennu" options="singleline"]Textovar="a"[/code]; y [code language="bennu" options="singleline"]Textovar=texto[0];[/code]  es lo mismo...

Y si
[code language="bennu" options="singleline"]texto[/code] cuando i=0 es lo mismo que [code language="bennu" options="singleline"]texto[0] [/code] No entiendo por qué no puede ser así

gracias por las clases, a todos
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: Packo_z007 on September 26, 2008, 12:57:32 AM
Espero poder despejar tus dudas. La funcion write_string recibe como parametro un puntero a string.. no un string ,es por eso que se antepone & al nombre de la variable ( &Textovar o &Texto[0]).
Cuando llamas a la funcion, le pasas como parametro el lugar en la memoria de donde tiene que leer el texto a mostrar, no el texto en si.. (por eso no tiene sentido escribir write_string(0,0,0,0,"cadena"))
Si bien el texto ubicado en ese "lugar" puede cambiar, el lugar debe mantenerse fijo. Texto[0] y Texto[1] estan en diferentes lugares en la memoria. Es por esto que se usa una variable auxiliar.. en este caso Textovar. El lugar que ocupa Textovar es siempre el mismo. Saludos
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: SplinterGU on September 26, 2008, 01:06:33 AM
es un poco complicado de entender si no tenes muy claro el tema de los punteros, te sugiero busques en el foro "punteros" o "pointers" y hay un documento que yo puse un link que te puede aclarar un poco el tema...
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: Danielo515 on September 26, 2008, 01:48:52 AM
Sí se como funcionan los punteros, los estudié cuando me dio por el c, aunque no pasé de las listas enlazadas.
Lo que no se es si me he explicado yo, si texto[0] contiene "a", cuando yo hago textovar=texto[0] entonces textovar vale "a", textovar está en la misma posición de memoria, lo que cambia es su valor, por eso no entiendo que tiene de malo el ejemplo de
[code language="bennu"]loop
       if(algo)i=0;end
       if(otra)i=1;end

TextoVar = Texto;end[/code]
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: Packo_z007 on September 26, 2008, 02:05:08 AM
ese ejemplo esta bien... el que pusiste primero es el que esta mal.
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: SplinterGU on September 26, 2008, 03:59:10 AM
claro, ese ejemplo esta bien... yo pense que hablablas del primer ejemplo...
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: kim-elet-o on September 26, 2008, 07:42:15 AM
Yo tambien creia que hablabas del primer ejemplo, el segundo ejemplo esta correcto, no me fije bien en el mensaje tuyo ya que tenia mucho sueño, y estaba a punto de irme a dormir.
Title: Re: write_string ¿puede funcionar de esta manera?
Post by: Danielo515 on September 26, 2008, 10:35:41 AM
Ja ja, era lo que me imaginaba,  un malentendido. Muchas gracias por intentar resolver mis dudas aun teniendo sueño.
Un abrazo a todos.