Erro en SDL_GetKeyState

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

Erro en SDL_GetKeyState

Notapor Juan Carlos » Sab Sep 29, 2007 4:34 am

Hola, bueno, tengo entendido que SDL_GetKeyState me devuelve un array indicandome que teclas estan presionada o no. La he estado usando para los controles de un personaje de un juego y parece funcionar bien.
Pero, y aqui bien mi pregunta, no siempre funciona correctamente. Si presiono varias teclas a la vez, el programa no funciona como deberia. Aqui les paso un codigo patologico que ejemplifica la situacion:

Código: Seleccionar todo
Uint8 *key=SDL_GetKeyState(NULL);

SDL_Delay(4000);
SDL_PumpEvents();

if(key[SDLK_q]==1) printf("q"); else printf("0");
if(key[SDLK_w]==1) printf("w"); else printf("0");
if(key[SDLK_e]==1) printf("e"); else printf("0");
if(key[SDLK_r]==1) printf("r"); else printf("0");
if(key[SDLK_t]==1) printf("t"); else printf("0");
if(key[SDLK_y]==1) printf("y"); else printf("0");
if(key[SDLK_u]==1) printf("u"); else printf("0");
if(key[SDLK_i]==1) printf("i"); else printf("0");
if(key[SDLK_o]==1) printf("o"); else printf("0");
if(key[SDLK_p]==1) printf("p"); else printf("0");

printf("\n");


En mi computadora si presiono "qwerty" me indica que solo se presiono "qwer"; si presiono "qweruiop", me indica que "qweruiop" se presionaron (no hubo error). Probe otras combinaciones y la verdad es que los resultados son bastantes erraticos.

Alguno tiene idea de lo que sucede?

Estoy trabajando en Linux, en C.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm

Notapor hugoruscitti » Sab Sep 29, 2007 4:42 pm

Sí, es cierto. Lo he notado en otros juegos.

El problema no es propio de SDL, sino del circuito físico de
los teclados. No tengo el vocalurario técnico para explicarlo
correctamente, pero es "como sí" el circuito que tienen los
teclados para transferir información a la computadora estubiera
reducido. Es decir, la pista que transfiere información de
algunas teclas se utiliza para muchas otras, por lo tanto el
diseño físico del teclado no permite la pulsación de todas esas
teclas juntas.

Debería ocurrirte lo mismo con cualquier otro juego o programa.

Hace muchos años atrás teníamos ese problema con un amigo,
jugábamos a un juego de peleas lo dos en el mismo teclado.
Entonces, cuando uno de nosotros "saltaba" pulsando dos teclas
simultaneas el otro no se podía "cubrir"... ¡ que años aquellos !
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Juan Carlos » Sab Sep 29, 2007 9:42 pm

Gracias por contestar, vere si puedo sortear el problema.

Saludos
Juan Carlos
 
Mensajes: 97
Registrado: Sab Jul 07, 2007 1:05 pm


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado