
La clase keyHandler implementa KeyListener y sirve para detectar cuándo se presiona o se suelta una tecla. Se usan variables booleanas para saber el estado de cada tecla relevante.
public class keyHandler implements KeyListener {
public boolean arribaPres, abajoPres, izqPres, drchPres;
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_W) arribaPres = true;
if (keycode == KeyEvent.VK_S) abajoPres = true;
if (keycode == KeyEvent.VK_A) izqPres = true;
if (keycode == KeyEvent.VK_D) drchPres = true;
}
@Override
public void keyReleased(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_W) arribaPres = false;
if (keycode == KeyEvent.VK_S) abajoPres = false;
if (keycode == KeyEvent.VK_A) izqPres = false;
if (keycode == KeyEvent.VK_D) drchPres = false;
}
}
keyHandler kh = new keyHandler();
this.addKeyListener(kh);
setFocusable(true);
Esto conecta el handler con el panel donde ocurre el juego.
int jugadorX = 100;
int jugadorY = 100;
int velocidadJugador = 4;
El método update() se ejecuta continuamente. Revisa qué teclas están activas y ajusta la posición del jugador.
public void update() {
if (kh.arribaPres) jugadorY -= velocidadJugador;
if (kh.abajoPres) jugadorY += velocidadJugador;
if (kh.izqPres) jugadorX -= velocidadJugador;
if (kh.drchPres) jugadorX += velocidadJugador;
}
paintComponent dibuja al jugador en su nueva posición cada vez que se actualiza.