int write_float( int fuente, x, y, centrado, float * variable )


Retorna:

 El código identificador del texto que se ha escrito.

Descripción:

Esta función es la utilizada para visualizar el valor numérico de una variable; para ello requiere los siguientes parámetros.

fuente : El código de la fuente o tipo de letra que se va a utilizar. Aquí se debe poner un 0 cuando se quiera utilizar la fuente del sistema (fuente de color blanco, pequeña, de 8 por 8 puntos), o bien el código de fuente devuelto por la función load_fnt() cuando se carga una nueva fuente en el programa.

x, y : Las coordenadas relativas a pantalla en las que se va a imprimir el valor numérico, primero en el eje horizontal y después en el vertical.

centrado : Es un código que determina la posición del valor numérico que se especifica en las coordenadas anteriores. Sus valores son:

  0-Arriba izquierda 1-Arriba 2-Arriba derecha
  3-Izquierda        4-Centro 5-Derecha
  6-Abajo izquierda  7-Abajo  8-Abajo derecha

Por ejemplo, si se escribe un valor numérico en las coordenadas 160, 0 y con el código de centrado 1 (Arriba), entonces se centrará el valor numérico en la columna 160 y se imprimirá de la línea 0 hacia abajo. O si se quiere un valor numérico en la
esquina superior izquierda, se debe imprimir en las coordenadas 0, 0 y con código de centrado 0 (Arriba izquierda).

OFFSET variable - Como último parámetro se debe especificar el desplazamiento dentro de la memoria del ordenador de la variable cuyo valor se quiere visualizar (el desplazamiento del dato se obtiene con el operador OFFSET).

El valor numérico impreso permanecerá en pantalla hasta que se borre con la función delete_text(), que requiere como parámetro el código identificador que devuelve write_float().

Importante: Durante el tiempo que aparezca el valor de la variable en pantalla, éste se irá actualizando automáticamente cada vez que se modifique la variable, no siendo necesarias nuevas llamadas a write_float().

Para imprimir un texto alfanumérico de cualquier tipo (un texto fijo) se debe utilizar la función write().

Los textos permanecerán inalterados en pantalla aunque se impriman gráficos en la misma o pasen gráficos de procesos por delante o por detrás de ellos.


MAIN_PROGRAM_CDIV

PRIVATE
 float
    variable;

BEGIN_PROGRAM

 set_gfx(GFX_AUTODETECT_WINDOWED);
 set_mode(m320x200);

 write(0, 160, 190, 1, "[ESPACIO] cambia el valor de la variable.");
 write_float(0, 160, 100, 4, &variable); // Se imprime una variable.

 LOOP{
        if (scan_code==_space) variable = ((float) rand(-100, 100)) / rand(-100,100);
        FRAME;
 }

END_PROGRAM

En el ejemplo se imprime un texto usando write() y el valor de una variable con la función write_float(). A esta última función se le pasan los siguientes parámetros:

  0     // Como fuente (0 es la fuente del sistema).
  0, 10 // Como coordenadas de pantalla.
  0     // Como código de centrado (Arriba/Izquierda).
  &variable // Como el desplazamiento en memoria de la variable.

A cada paso del bucle, si se pulsa la barra espaciadora, se cambia el valor de la variable asignándole uno elegido aleatoriamente, al azar, con la función rand().

El plano de profundidad en el que aparecen los textos escritos se controla mediante la variable global text_z, que sirve para regular qué gráficos se deben ver por encima de los textos y cuáles por debajo.

Los textos podrán luego moverse hasta otra posición si es necesario utilizando la función move_text(), que también requiere como parámetro el código identificador que devuelve write_float().

Cuando se utilicen fuentes cargadas de archivos FNT debe estar activada la paleta de colores que se ha utilizado para generar dichas fuentes (ver load_pal()) pues, de lo contrario, los colores pueden aparecer cambiados, visualizándose el texto incorrectamente.

Advertencia:

No es posible imprimir una expresión, como se muestra a continuación:

 write_float(0, 0, 0, 0, &variable + 1);

Para imprimir el valor de la variable más 1, es decir, si se quisiera imprimir este valor, se debería sumar 1 a la variable o crear otra variable y asignarle a ésta el valor de la variable original más 1, por ejemplo:

 variable2 = variable + 1;
 write_float(0, 0, 0, 0, &variable2);

En este caso se debería tener en cuenta que habría que actualizar el valor de variable2 al menos una vez por cada imagen (por cada FRAME) del juego, ya que al cambiar variable no se actualizaría automáticamente el valor de variable2 a no ser que se ejecutara nuevamente la sentencia variable2 = variable + 1;.


Ver: write() - move_text() - delete_text() - load_fnt() - text_z