Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: jalbam en 05 de Abril de 2008, 10:06:45 PM

Título: No depender de la configuración de teclado en Java
Publicado por: jalbam en 05 de Abril de 2008, 10:06:45 PM
Hola, buenas.

Estoy haciendo un clon del Tetris en Java y para asignar el teclado a un evento, realizo lo siguiente:

       addKeyListener(new java.awt.event.KeyAdapter() {
           public void keyPressed(java.awt.event.KeyEvent evt) {
               TetrisFormKeyPressed(evt);
           }
       });


Todo funciona bien, lo que pasa es que me he dado cuenta que en otros sistemas cuando se deja pulsada una tecla no funciona igual. Todo es debido a cómo tiene configurado ese sistema el teclado. Por ejemplo, en Windows, depende del "Retraso de repetición" y "Velocidad de repetición" (en Panel de control -> Teclado).

He visto juegos que este problema no lo tienen, lo cual es lo normal, pero no sé si alguno de ellos estará hecho en Java o en Java es imposible impedir que esto pase.

¿Hay alguna forma de poder asignar yo mismo la velocidad y retraso de repetición del teclado al pulsar una tecla? Mi idea es que llame a mi método (TetrisFormKeyPressed(evt)) ni muy deprisa ni muy despacio y siempre a la misma velocidad en todos los sistemas (a no ser que sean demasiado lentos y tengan problemas de velocidad, ya que entonces me imagino que será inevitable que funcionen distinto).

Muchas gracias de antemano. Espero no haberme enrollado demasiado :)
Título: No depender de la configuración de teclado en Java
Publicado por: jalbam en 09 de Abril de 2008, 02:46:41 PM
Hola otra vez.

Me respondo a mi mismo: al final buscando por Google lo he encontrado de casualidad (antes ya había buscado, pero no daba con la consulta adecuada) y ya lo tengo hecho.

Pongo aquí la página para quien le interese:
http://www.gamedev.net/community/forums/topic.asp?topic_id=348728

Evidentemente, la forma en que lo he hecho ha tenido que ser distinta pero lo esencial está ahí.

Lo malo es que para mi Tetris he tenido que poner una velocidad distinta a las teclas de rotar que a las flechas de mover, ya que con la misma iba muy rápido para unas y muy lento para las otras. Aún así hecho en falta, quizá, un retraso inicial después de la primera pulsación (no creo que me entrañe ningún problema implementarlo) para que sea más jugable.

Cuando lo tenga más acabado ya presentaré mi pequeño proyecto en el foro correspondiente, por si a alguien le interesa (que no creo, jejeje).

Hasta pronto ;)