Java - Capturas de dos teclas al mismo tiempo

 
Vista:
sin imagen de perfil

Capturas de dos teclas al mismo tiempo

Publicado por Rodrigo (5 intervenciones) el 13/11/2016 15:22:53
Buenas tardes, iré al grano con mi problema.
Estoy finalizando un video juego. Trata de un personaje que dispara y avanza con las flechas (muy basico).
Resulta que cuando estoy avanzando (mantengo una de las flechas precionadas) y preciono la tecla de "disparar" mi personaje se detiene, tengo que soltar la fecla y volver a precionar para que siga avanzando. Es como que al precionar la tecla de disparo, deja de capturarse las otras.
Alguna solucion? Creo que tal ves se deriva a un mal diseño, o eso es lo que me a dicho una persona je, espero poder recibir ayuda y asi poder finalizar el "jueguito" y entregarlo como proyecto en una materia de la univercidad :) desde ya muchas gracias!
Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 87
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Capturas de dos teclas al mismo tiempo

Publicado por Tomas (76 intervenciones) el 13/11/2016 21:03:13
Eso suena a threads (hilos), varios procesos al mismo tiempo. Tienes que mostrar tu código (almenos la parte que falla si no quieres mostrarlo todo). El unico videojuego que programé lo hice con libgdx, aunque no me acuerdo si este framework usa threads.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Capturas de dos teclas al mismo tiempo

Publicado por Rodrigo (5 intervenciones) el 13/11/2016 22:25:54
Esta seria la parte del codigo que captura mis teclas.
direccion=0 me mueve hacia arriba, direccion=1 hacia abajo , etc...
logica.moverJugador(direccion) lo que hace es eso justamente, mover al jugador... simplemente actualiza la posicion y el JLabel en un JPanel.
Es un juego muy sencillo y conocido, Battle City se llama.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int direccion=4;
 
addKeyListener(new KeyAdapter() {
	public void keyPressed(KeyEvent arg0) {
 
		if(arg0.getKeyCode()==KeyEvent.VK_UP)
			direccion=0;
		else if(arg0.getKeyCode()==KeyEvent.VK_DOWN)
			direccion=1;
		else if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
			direccion=2;
		else if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
			direccion=3;
 
		if (direccion!=4){
			logica.moverJugador(direccion);
		}
	}
});
 
 
addKeyListener(new KeyAdapter() {
	public void keyReleased(KeyEvent e) {
		if (e.VK_B==e.getKeyCode()){
			logica.disparoJugador();
		 }
	}
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar