Ayuda de Div Games Studio/advance()

De Wikilibros, la colección de libros de texto de contenido libre.

Sintaxis[editar]

advance(<distancia>)

Descripción[editar]

Avanza el proceso en su ángulo (el que indique la variable local angle) tantos puntos como indique la expresión (distancia) pasada como parámetro.

Para avanzar en un angulo diferente al especificado en esta variable, usa la función xadvance().

La distancia puede ser también un número negativo, con lo cual el gráfico del proceso avanzará (sus coordenadas x e y) en la dirección contraria a su ángulo.

Ejemplo[editar]

PROGRAM ejemplo_advance;
BEGIN
    load_fpg("help/help.fpg");
    put_screen(0, 1);
    graph=101;
    x=160;
    y=100;
    write(0, 0, 0, 0, "Use los cursores para cambiar la dirección.");
    LOOP
        IF (key(_right)) angle-=10000; END
        IF (key(_left)) angle+=10000; END

        advance(2); // Avanzamos dos puntos el proceso

        FRAME;
    END
END

Este ejemplo dibujará un triángulo en pantalla que avanzará en la dirección especificada en la variable local predefinida angle utilizando esta función.

Se recuerda que el ángulo se especifica en milésimas de grado.

Se podrá modificar la variable angle usando las teclas de los cursores (sumando y restando 10000, es decir, 10 grados).

Esta función equivale siempre a las dos siguientes sentencias:

x+=get_distx(angle, <distancia>); y+=get_disty(angle, <distancia>);

Es decir, esta función únicamente modifica las coordenadas del proceso. Cabe la posibilidad de utilizar las dos sentencias anteriores cuando se quiera que el proceso avance en un ángulo diferente al que indica su variable angle; esto resultará útil cuando se quiera que el gráfico del proceso avance en una dirección sin rotarse, alternativamente puedes usar la función xadvance().

Por ejemplo, para conseguir que un proceso avance 8 puntos en una dirección (que se podría tener en una variable privada como angulo2) pero rotado hacia otra dirección, (la indicada en angle), se utilizarían las sentencias:

x+=get_distx(angulo2, 8);
y+=get_disty(angulo2, 8);

Ver también[editar]