Foros - Stratos

Stratos => Principiantes => Mensaje iniciado por: HexQZ en 24 de Junio de 2014, 08:34:18 AM

Título: Leer más de una tecla a la vez
Publicado por: HexQZ en 24 de Junio de 2014, 08:34:18 AM
Que tal a todos.

Acabo de comenzar a programar y me he topado con un problema.
Hace un par de días que me he trabado en como leer las entradas del teclado, de modo que reconozca varias teclas presionadas al mismo tiempo.
Mi intención es asignarles valores como 1, 2, 4, 8 ... para combinarlas y hacer diagonales, aunque supongo que ya muchos conocen esa manera.
Si alguien me pudiese decir que función o método usan para esto se los agradecería mucho.

Gracias de antemano.
Título: Re:Leer más de una tecla a la vez
Publicado por: Starky en 24 de Junio de 2014, 09:17:52 AM
Buenos días HexQZ,

Creo que tendrías que decir a qué tecnología te refieres, si es C++, si es algún engine...con tan poco información te pueden responder cualquier cosa.

Un saludo.
Título: Re:Leer más de una tecla a la vez
Publicado por: HexQZ en 24 de Junio de 2014, 08:54:48 PM
Una diculpa.

Estoy usando el lenguaje C++ en CodeBlocks. Ahora mismo uso la función "kbhit" para el movimiento pero no he podido hacer lo que mencioné antes. No se que otra información necesiten, pero cualquier cosa por aquí estaré.
Título: Re:Leer más de una tecla a la vez
Publicado por: Darago_malaga en 25 de Junio de 2014, 04:09:34 AM
Nunca he trabajado con Code Blocks pero has probado a usar???


if( GetKeyState(115) & 0x8000 )
{
    <EVENT>
}


El valor que se le pasa a la función es el valor ASCII de la letra que representa la tecla en Mayúsculas.

Creo que se puede usar también GetKeyState('S')

O los valores de esta tabla :
http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx
Título: Re:Leer más de una tecla a la vez
Publicado por: Hechelion en 25 de Junio de 2014, 05:07:42 AM
Darago, creo que no está preguntando por mayúsculas.

Cita de: HexQZ en 24 de Junio de 2014, 08:34:18 AM
Mi intención es asignarles valores como 1, 2, 4, 8 ... para combinarlas y hacer diagonales, aunque supongo que ya muchos

Hex, respecto a tu pregunta, por lo que yo sé, hacer eso a "capella" no es nada trivial, ya que todas las rutinas de entrada convencionales no están pensadas para tener un acceso directo al estado del teclado. Por lo que recuerdo, la mejor solución pasa por crearte tu propio sistema de eventos para las pulsaciones, sin embargo nunca lo he hecho, si quieres programar juegos, lo mejor es usar alguna librería y hasta la más pequeña de las librerías para juegos ya trae resuelto este problema, así que te recomendaría que le dieras un vistazo a SDL o SFML.
Título: Re:Leer más de una tecla a la vez
Publicado por: HexQZ en 25 de Junio de 2014, 08:35:11 AM
Después de investigar un poco parece que mi solución está en SDL, ya que ocupo que se registre si hay o no hay pulsaciones de una tecla o varias a la vez. Como recién empiezo y no es algo urgente lo del teclado, seguiré usando "kbhit" hasta que aprenda a usar SDL.

Muchas gracias a todos por sus respuestas.