Gemini_Generated_Image_8tahd48tahd48tah.png

  1. Clase KeyHandler

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;
    }
}


2. Explicación de los métodos del KeyListener


3. Instanciación y configuración

keyHandler kh = new keyHandler();
this.addKeyListener(kh);
setFocusable(true);

Esto conecta el handler con el panel donde ocurre el juego.


4. Valores iniciales del jugador

int jugadorX = 100;
int jugadorY = 100;
int velocidadJugador = 4;

5. Actualización del movimiento

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;

}

6. Dibujo del jugador

paintComponent dibuja al jugador en su nueva posición cada vez que se actualiza.