Hola, me presento, soy baigos de Corrientes Capital Nacional de los bulones.
Ando programando algunas cosas en C + SDL, y resulta que lo que quiero hacer es hacer una funcion mas o menos de este tipo:
void moverobjeto(SDL_Surface *img, Uint16 tiempo, int cantidad_a_mover_en_x)
donde yo le doy un cierto intervalo de milisegundos, y una cantidad en pixeles a desplazar en ese tiempo. La velocidad sería calculada segun los parametros. El tema es como hacerlo, se me ocurrieron 2 ideas:
-Tengo el framerate fijado en 60 cuadros, con lo cual cada 17 ms (aproximadamente) dibujo un cuadro. Entonces hago (17 ms x cantidad_a_mover)/tiempo en ms y obtengo la cantidad de pixeles que debo mover cada 17 ms (o el intervalo de dibujado que le asigne en ms).
-Divido el tiempo en ms por la cantidad de pixeles a mover, y obtengo un intervalo de dibujado en milisegundos.
La primer solucion es la que tengo mas accesible, el tema es que SDL_Rect al tener x e y en Sint16 no es preciso, y no llega a la cantidad de pixeles fijada (o se pasa).
En la segunda se me arma un quilombo con los timers, y tampoco es precisa. Ademas como fijo un framerate, tengo un problema alli tambien.
He visto que stepmania implementa algunas funciones similares, pero el codigo fuente del stepmania es mas intrincado que la vida de ricardo fort.
Si alguien aporta alguna idea bienvenida será, y asi podremos mover una superficie conteniendo a zulma lobato en milisegundos bla bla bla...el sueño de todo ser humano...bla bla bla