PDA

Ver la versión completa : ¿Cómo hacer pausas en el SDK?



Puck2099
18/06/2004, 22:48
Hola,

Sigo programando mi primer juego y ahora me ha surgido una duda. ¿Cómo se hace una pausa de x milisegundos usando el SDK?

Lo necesito para que cuando se pulse una dirección no se vaya un cursor a tomar por saco (avanza casi de 30 en 30 pixeles por pulsación), haciendo una pequeña pausa entre las pulsaciones.

He probado la función void GpThreadSleep(unsigned int delay); pero el Visual C me da un error de linkeo (error LNK2001: unresolved external symbol _GpThreadSleep).

¿Podría alguien ayudarme?

Muchas gracias

Wave
19/06/2004, 11:47
void delay(int msec)
{
unsigned int n_tick;
n_tick = GpTickCountGet();
while ( ( GpTickCountGet() - n_tick ) < msec);

}
Esta es la funcion que uso yo, la encontré no se donde.

Puck2099
19/06/2004, 11:54
Gracias por la función.

Había solucionado el problema haciendo uso de una variable que iba aumentando y reseteando para que funcionaran las pulsaciones solo cuando alcanzara un cierto valor, pero es una solución un poco "chapucera" y la tuya es mucho más elegante :)

Saludos

canseco
25/06/2004, 10:23
A mi esta funcion me da un error de comparacion entre signed y unsigned, aunque me compila. Despues ejecuto el programa, pero no hace la pausa. ¿A que es debido?

Puck2099
25/06/2004, 10:29
A mi esta funcion me da un error de comparacion entre signed y unsigned, aunque me compila. Despues ejecuto el programa, pero no hace la pausa. ¿A que es debido?

No es un error, es un warning (advertencia), no tienes que preocuparte por él. De todos modos a mí sí me hace la pausa, ¿qué valor le pasas a la función?, porque igual es muy pequeño y, aunque hace la pausa, no te das cuenta.

Saludos

Puck2099
25/06/2004, 10:31
Por cierto, la warning sale porque comparas un entero sin signo con otro con signo. Supongo que declarando msec en vez de como "int", como "unsigned int" (no nos hacen falta valores negativos para las pausas) ya no saldrá el warning.

Saludos

amkam
25/06/2004, 10:33
void delay(int msec)
{
unsigned int n_tick;
n_tick = GpTickCountGet();
while ( ( GpTickCountGet() - n_tick ) < (unsigned)msec);

}

Asi ya no os dara ese warning, esta funcion esta en el ejemplo de timers del sdk oficial de gp32, asi que merece la pena que le echeis un vistazo

canseco
25/06/2004, 10:41
Ahora si que funciona correctamente, muchas gracias.