Logo

¡Bienvenido a Stratos!

Acceder

Foros





Problemas con el input de SDL

Iniciado por misscelan, 31 de Enero de 2008, 05:20:05 PM

« anterior - próximo »

misscelan

Buenas,

Tengo un problema al recoger los eventos de teclado en SDL.

Mi personaje se mueve con las teclas w,a,s,d y salta con el espacio.

Para las teclas de dirección uso esto


unsigned char *keys;

keys  = SDL_GetKeyState(NULL);

if (( keys[SDLK_s]) && ( keys[SDLK_d]) && ( keys[SDLK_a]))
...
else if (( keys[SDLK_w]) && ( keys[SDLK_d]) && ( keys[SDLK_a]))
...
else if (( keys[SDLK_w]) && ( keys[SDLK_d]))
...


Para el salto uso esto:

while (SDL_PollEvent(&event))
{
   switch (event.type)
   {
       case SDL_KEYDOWN:
           if (event.key.keysym.sym == SDLK_SPACE)
           ...


El caso es que esto funciona bien para la mayoría de los casos, digo mayoría porque para estas 3 combinaciones (a,w,d), (s,d), (a,s,d) no entra dentro del if de la barra espaciadora. Para todas las demás (a,s), (w,a), (w,d), a, s, d, w,... si entra dentro del if y todo se ejecuta normalmente.

Dentro del SDL_KEYDOWN parecen llegar las teclas de 1 en 1 y con las 3 primeras combinaciones nunca llega la barra, en las otras sí.

Alguna idea?

Muchas gracias y un saludo.

Martinez

Segun esto: http://docs.mandragor.org/files/Common_libs_documentation/SDL/SDL_Documentation_project_en/sdlgetkeystate.html

se debe llamar a SDL_PumpEvents para actualizar el array de las teclas. SDL_PollEvent y SDL_WaitEvent lo hacen internamente por lo que no es necesario. Puede que sea eso, que a veces si esta actualizado y a veces no.

La verdad es que no entiendo el movimiento del PJ y por que compruebas todos los casos.

misscelan

Cuando puse el post lo estaba probando en otro ordenador y en Ubuntu, ahora desde otro ordenador en windows parece que todo funciona correctamente.

De todas maneras me gustaría que funcionase correctamente en los dos, así que le echaré un ojo a la información que me has pasado a ver si puede ser algo de eso.

Gracias.

Un saludo.