Ejemplo sencillo de control de imágenes por tiempo en milisegundos

Started by DCelso, September 29, 2009, 11:21:25 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

Hola a todos, dejo un ejemplo sencillote de una animación que es independiente del FPS.

import "mod_key"
import "mod_proc"
import "mod_map"
import "mod_video"
import "mod_time"
global
  type st_pose
    int graph;
    int m_sec;
  end
Begin
    set_mode(320,240,32);
    dragon();

    Repeat
        frame;
    Until(key(_ESC))

    exit();

End

Process dragon()
Private
   st_pose poses[5];
   i;
   int cur_pos;
   int ini_time,passed;
Begin
    x=160;
    y=100;
    for (i=0;i<5;i++)
      poses[i].graph = load_png("recursos/dragon"+(i+1)+".png");
      poses[i].m_sec = 200;
    end
    poses[0].m_sec = 1000;
    poses[4].m_sec = 300;
    ini_time = get_timer();
    while(!key(_esc))
        passed = get_timer() - ini_time;
        if (passed > poses[cur_pos].m_sec)
          ini_time = get_timer();
          cur_pos++;
          if (cur_pos >= 5)
            cur_pos = 0;
          end
        end
        graph=poses[cur_pos].graph;
        frame;
    End
    for (i=0;i<5;i++)
      unload_map(0,poses[i].graph);
    end
End

Se aceptan mejoras.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Windgate

No aporto mejoras porque se me escapa, es una solución basada en timers que jamás había pensado... :o

Lo tendré en cuenta para mi módulo de animación, ya que actualmente sólo es posible especificar cada cuántos frames anima, pero no es posible especificar cada cuántos segundos independientemente de los frames... La idea es tremenda.

Gran aporte DCelso, sos groso.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

Esto me permitiria poner segundos en pantalla ? (lo comento en el otro hilo).
Por cierto el fichero adjunto esta danificado, por suerte el prg se extrae bien.

SplinterGU

esta bien el ejemplo, karma++ para ti.

no se como no lo vi antes.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2