set_fps()

set_fps(<nº de imágenes por segundo>, <nº de saltos permitidos>)

Descripción:

Esta función es la que regula la velocidad a la que van los juegos; define el número de imágenes por segundo que se mostrarán del juego (el número de fotogramas por segundo).

Por defecto la visualización se regulará a 18 imágenes por segundo, lo cual quiere decir que si un proceso se mueve un punto por cada imagen (FRAME), éste se moverá en pantalla a una velocidad de 18 puntos por segundo.

Esta función puede fijar el número de imágenes por segundo (FPS, Frames Per Second) desde 4 como mínimo hasta 200 como máximo; en general no son necesarias más de 24 imágenes por segundo para conseguir un movimiento fluido y suave.

El segundo parámetro, número máximo de saltos permitidos, se refiere a cómo es preferible que se comporte el programa cuando se ejecute en un ordenador que sea lo suficientemente rápido como para calcular el número de imágenes por segundo que se solicita. Funciona como se muestra a continuación.

Número de saltos permitidos:

0 - El juego irá a menos velocidad cuando se ejecute en un ordenador demasiado lento, es decir, se mostrarán las imágenes por segundo que a ese ordenador le de tiempo a calcular.

1 - Si el ordenador no puede calcular todas las imágenes, se le permite que de vez en cuando omita alguna imagen para intentar mantener la velocidad relativa del juego. El juego se verá un poco más brusco, pero más rápido.

2 o más - Se permite al juego que salte tantas imágenes consecutivas como se indica en este parámetro con tal de mantener la velocidad relativa original del juego. Por ejemplo, si se fija el número de saltos a 4 y en el juego un proceso se desplazaba de un punto en un punto, en un ordenador muy lento se podría llegar a desplazar de hasta 4 puntos en 4 puntos.

Programa ejemplo:
PROGRAM ejemplo_set_fps;

PRIVATE
    imágenes=24;
    saltos=4;

BEGIN
    load_fpg("help\help.fpg");
    graph=1;
    x=160;
    y=100;
    write(0, 0, 0, 0, "Imágenes por segundo: Arriba(+) / Abajo(-)");
    write_int(0, 0, 10, 0, offset imágenes);
    write(0, 0, 20, 0, "Saltos permitidos: Derecha(+) / Izquierda(-)");
    write_int(0, 0, 30, 0, offset saltos);
    write(0, 160, 200, 7, "Utilice los CURSORES para cambiar los valores.");
    LOOP

        // Se elige el número imagenes por segundo
        set_fps(imágenes, saltos);

        IF (key(_up) AND imágenes<200) imágenes++; END
        IF (key(_down) AND imágenes>4) imágenes--; END
        IF (key(_right) AND saltos<20) saltos++; END
        IF (key(_left) AND saltos>0) saltos--; END
        angle+=4000;
        FRAME;
    END
END


En el ejemplo se imprimen los mensajes necesarios y el proceso principal crea un gráfico en el centro de la pantalla rotando indefinidamente.

En cada paso del bucle se detectan las teclas del cursor, se cambia el número de imágenes por segundo (imágenes) con arriba/abajo y el máximo número de saltos permitidos (saltos) con derecha/izquierda.

Al comienzo de cada iteración del bucle se establece la velocidad según los valores de ambas variables, con la función set_fps().


Nota: La variable global fps mantiene actualizado el número de imágenes por segundo que se están consiguiendo realmente en el programa.


Ver: FRAME - max_process_time - set_mode() - fps