Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: fr0d0b0ls0n on September 09, 2008, 07:55:54 PM

Title: Problema representando variables sin decimales
Post by: fr0d0b0ls0n on September 09, 2008, 07:55:54 PM
Quiero representar mediante un write_var o similar una variable float, pero quiero que me la muestre sin decimales. ¿Hay alguna forma que no sea pasarlo a una variable string mediante un format y representar esta?
Title: Re: Problema representando variables sin decimales
Post by: SplinterGU on September 09, 2008, 08:33:47 PM
si, hay otra forma... hace un write_int usando una variable int cuyo contenido lo seteas usando la float... var_int = var_float;
Title: Re: Problema representando variables sin decimales
Post by: fr0d0b0ls0n on September 11, 2008, 06:50:36 AM
Quote from: SplinterGU on September 09, 2008, 08:33:47 PM
si, hay otra forma... hace un write_int usando una variable int cuyo contenido lo seteas usando la float... var_int = var_float;

Tampoco es una solución muy elegante, pero si es la única pues tendré que usar esa. Al menos es más eficiente que usar un string -_-

Lo que daría en algunas ocasiones por un write_var con algún tipo de flags...
Title: Re: Problema representando variables sin decimales
Post by: TYCO on September 11, 2008, 10:19:46 AM
Para una float sin decimales (Como dijo SplinterGU):

Forma1:
variable_int=variable_float;
wirte_int(fuente, x, y, alineacion, &variable_int);

Forma2:
variable_int=variable_float;
delete_text(texto);
texto=write(fuente, x, y, alineacion, variable_int);
Title: Re: Problema representando variables sin decimales
Post by: fr0d0b0ls0n on September 12, 2008, 05:43:18 AM
Para la forma 2 es más sencillo usar:

delete_text(texto);
texto=write(fuente,x,y,alineacion,format(variable_float,0);

Pero odio usar tanto delete_text, en ese proceso hay entorno a 50 write, ya tuve que usar un vector para las IDs en otro proceso y no me gusto nada. :S

Por cierto, ¿un write_int consume menos recursos que delete_text y write?
Title: Re: Problema representando variables sin decimales
Post by: HaCkZJuaNN on September 12, 2008, 12:22:54 PM
sería lo más lógico..., aunque yo hago mucho delete_text write porque cambia la variable que tengo que representar(usando matrices, lo que cambia es el indice del array, y por lo tanto la variable cambia), y no me da ningún problema de performance, al menos con la última versión
Title: Re: Problema representando variables sin decimales
Post by: TYCO on September 12, 2008, 05:26:10 PM
fr0d0b0ls0n eso seria una tercera forma de hacerlo tambien jeje.

HaCkZJuaNN que haces exactamente en ese array?? quizas si pones el codigo entre todos podiemos optimizarlo, porque segun te leo no termino de enterarme de que cambie el indice del array y que cambie la variable.
Title: Re: Problema representando variables sin decimales
Post by: HaCkZJuaNN on September 12, 2008, 07:43:24 PM
imagínate que tengo un array nombre[4] = "Pedro","Juan","Antonio","Manuel","Francisco";

y ahora, tengo una variable int nombre_actual

y quiero que se represente en todo momento nombre[nombre_actual], si pongo write_var(0,400,300,4,nombre[nombre_actual]) al principio, va a escribir "Pedro", todo el rato, porque representa esa variable, pero si yo cambio nombre_actual no estoy cambiando la variable... solo a qué variable me refiero.

Sé que podría hacer una variable nombre_actual_str, hacerle write_var a esa variable y asignarle todo el rato nombre[nombre_actual], y a veces lo hago, pero otras veces no, depende de la situación :P
Title: Re: Problema representando variables sin decimales
Post by: TYCO on September 13, 2008, 02:23:14 PM
Vale ahora si me entere. Para evitar tantos delete_text, como has dicho que lo que realmente varias en la variable int nombre_actual, podrias hacer esto:

string nombre[4] = "Pedro","Juan","Antonio","Manuel","Francisco";
string nombre_a_mostrar;

Begin

write_string(0,400,300,4,nombre_a_mostrar)
o
write_var(0,400,300,4,nombre_a_mostrar)

Loop
...
...
// cuando varias el valor de nombre actual, harias la asignacion, o lo haces
// siempre antes del frame (como ahora) y si ha variado pues lo actualiza.
nombre_a_mostrar=nombre[nombre_actual];
Frame;
End
End

De todos modos, todo se puede hacer de muchas formas/maneras distintas.