• Sábado 16 de Noviembre de 2024, 22:58

Autor Tema:  Eventos Simultáneos De Teclado  (Leído 2405 veces)

Dirac

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Eventos Simultáneos De Teclado
« en: Martes 13 de Julio de 2004, 04:10 »
0
<_<
Ayuda, tengo un problema, estoy haciendo un juego el cual utiliza dos jugadores donde intervienen dos personas, cada uno tiene asociadas determinadas teclas para el movimiento. Estoy llamando los eventos de teclado mediante el callback GLKeyboardFunc(keyboard) , siendo keyboard de la forma:

void keyboard(unsigned char key, int x, int y){
      switch(key){
             case 'q':
                      ---------------------- ;
                      break ;
            -.etc.------
      }
}

El problema consiste, que cuando un player mantiene presionada una tecla para el moviento y el otro player inicia tambien su movimiento en forma consecutiva, el primero deja de funcionar y le da la prioridad al otro, hasta cuando el primero deja de presionar la tecla. Necesito que el movimiento de los dos players sea totalmente independoentes o por lo menos que lo parezca.

Si alguien tiene alguna solución a éste problema, que me lo haga saber URGENTE

gracias.

PD: El software está construido bajo plataforma LINUX.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Eventos Simultáneos De Teclado
« Respuesta #1 en: Martes 13 de Julio de 2004, 15:56 »
0
La clave es o bien usar algun buffer del sistema operativo donde se registren que teclas estén presionadas o construir este buffer tu mismo:

Cuando una tecla se presiona  (keydown) se marca como presionada y sólo se desmarca si ocurre el evento / mensaje que esta tecla es liberada (keyup). Así no tienes el problema de tu función actual q es mutuamente excluyente.

De todas formas algunas veces no funciona del todo bien (como sabrán los que jugaban mortal kombat en teclado entre jugadores, cuando por razones del juego necesitas mantener presionada la tecla durante largo tiempo)

Probe con mi programa y veo que cuando presionas cursor arriba y derecha y luego presionas izquierda, no sale presionado "izquierda", también ocurre con otras combinaciones de teclas. Sería bueno que diseñaras el juego de tal forma que no sea necesario mantener presionadas las teclas, o a lo mucho sólo una tecla por jugador sea necesario presionarla un buen rato.

Dirac

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Eventos Simultáneos De Teclado
« Respuesta #2 en: Sábado 17 de Julio de 2004, 01:44 »
0
Bueno me demoré un poco pero logre construir , el buffer para los eventos simultaneos de teclado ("ESTA IDEA ME LLEVÓ POR NUEVOS CAMINOS GRACIAS AMILIUS"), !!!!!pero con Java¡¡¡¡¡¡¡¡, especialmente estoy limitado en openGL, por alguna función o algo parecido que me diferencie una tecla cuando está presionada y cuando está liberada, así como en los eventos de mouse KEY_UP y KEY_DOWN, las cuales me permitirían activar y desactivar los elelmentos del buffer, había encontrado una "ActiveAsyncKey", bueno o algo así, pero para windows, en este momento no recuerdo si está en windows.h o glaux.h y como antes lo habia dicho el juego lo estoy desarrollando en linux, si alguien conoce un análogo a ésta función para linux les agradecería mucho. Solo falta eso y quedó para el que lo necesite me lo haga saber :hola: