Ayuda de Div Games Studio/write int()
Sintaxis
editarwrite_int(<fuente>, <x>, <y>, <código de centrado>, <OFFSET variable>)
Retorna
editarEl código identificador del texto que se ha escrito.
Descripción
editarEsta 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 6 por 8 puntos), o bien el código de fuente} devuelto por la función load_fnt() cuando se carga una nuevo 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.
- <código de 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_int().
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.
Ejemplo
editarPROGRAM ejemplo_write_int;
PRIVATE
variable;
BEGIN
write(0, 160, 190, 1, "Pulse [ESPACIO] para cambiar el valor de la variable.");
write_int(0, 160, 100, 4, OFFSET variable); // Se imprime una variable.
LOOP
IF (scan_code==_space) variable=rand(-100, 100); END
FRAME;
END
END
En el ejemplo se imprime un texto usando write() y el valor de una variable con la función write_int(). 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).
- OFFSET 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_int().
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_int(0, 0, 0, 0, offset 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_int(0, 0, 0, 0, offset 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;.