Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Control del teclado en Juegos Java

Estas en el tema de Control del teclado en Juegos Java en el foro de Java en Foros del Web. Tengo un problema al mover una imagen con teclado para simular el movimiento de una nave. El problema es conseguir un movimiento fluido sin trompicones ...
  #1 (permalink)  
Antiguo 02/02/2012, 08:14
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 14 años
Puntos: 1
Control del teclado en Juegos Java

Tengo un problema al mover una imagen con teclado para simular el movimiento de una nave. El problema es conseguir un movimiento fluido sin trompicones el primer segundo que pulso la tecla.
En Word o en el bloc de notas cuando pulsamos por ejemplo la tecla 'a' sin soltarla nos hace este efecto: a (pausa 1sg) aaaaaaaaaaaaaaaaaaaaa y luego soltamos tecla.

¿ Que tecnica en Java se puede utilizar para que cuando salta el evento del teclado no te haga el mismo efecto ?
  #2 (permalink)  
Antiguo 02/02/2012, 09:28
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 12 años, 9 meses
Puntos: 69
Respuesta: Control del teclado en Juegos Java

no lo hace, pero podrias usar un Thread.sleep(10)... en teoria cada 10 milisegundos agarraria el evento.... lo ideal para esto es que uses un panel ya que refresa la pantalla más rapido. y si estas en un applet, el applet viewer hace pausas que en el navegador no se ven.....

Si no hay problema me gustaria ver tu código por que quiero ver como crear gravedad y los choques entre los dibujos del panel
__________________
De nada, hay te encargo +1...
  #3 (permalink)  
Antiguo 03/02/2012, 14:41
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 14 años
Puntos: 1
Respuesta: Control del teclado en Juegos Java

Cita:
Iniciado por zero0097 Ver Mensaje
no lo hace, pero podrias usar un Thread.sleep(10)... en teoria cada 10 milisegundos agarraria el evento.... lo ideal para esto es que uses un panel ya que refresa la pantalla más rapido. y si estas en un applet, el applet viewer hace pausas que en el navegador no se ven.....

Si no hay problema me gustaria ver tu código por que quiero ver como crear gravedad y los choques entre los dibujos del panel
El fallo es que la rapidez en la repeticion de las teclas del sistema operativo no se si se puede configurar tambien dentro de Java. Con eso me facilitaria tambien la programacion. Estoy usando windows 7

Te escribo el codigo de control de teclas que mueve la nave es muy simple se llama VigilaTeclado. Paralelamente a esta tengo una clase con un timer que va llamando cada 10ms y va moviendo los enemigos. El movimiento de los enemigos es muy simplon de momento solo voy incrementando x o y linealmente. Estoy mas liado en solucionar el problema del movimiento con el teclado. Podria mover los enemigos y la nave con la tecnica de 'Polling' (bucle) pero puede ser mas liosa. La solucion que veo a mi problema es que tenga que mover la nave con teclado por llamada a bucle en vez de a eventos y el movimiento de enemigos con el timer.

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class VigilaTeclado extends KeyAdapter
{
public void keyPressed (KeyEvent evt)
{
switch (evt.getKeyCode())
{
case KeyEvent.VK_RIGHT: System.out.println("derecha"); break;
case KeyEvent.VK_LEFT: System.out.println("izquierda"); break;
case KeyEvent.VK_UP: System.out.println("Arriba"); break;
case KeyEvent.VK_DOWN: System.out.println("Abajo"); break;
case KeyEvent.VK_SPACE: System.out.println("disparo"); break;
}
}
}

Última edición por loganbdn; 03/02/2012 a las 14:49
  #4 (permalink)  
Antiguo 04/02/2012, 09:06
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 14 años
Puntos: 1
Respuesta: Control del teclado en Juegos Java

Ya encontre la solucion y como sospechaba se arreglaba utilizando otra tecnica o algoritmo. El truco esta en utilizar KeyPressed y KeyReleased

Etiquetas: control, juegos, teclado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:36.