Еще одна проблема KeyListener / KeyBinding

Тьфу яизвините, MadProgrammer, но я просто не могчтобы связывание клавиш работало так, как я хотел :(. Но яЯ буду продолжать изучать еще несколько уроков, пока не пойму это. Пока яя привязался к KeyListener, и он работает. Но теперь яу меня возникла проблема, гдеp.move (); Безразлично»на самом деле переместить игрока. Весь другой код, который ямы работаем нормально, кромеp.move ();, Я, наверное, не долженНе задавайте столько вопросов, так что, если вы хотите, чтобы я прекратил, просто скажите об этом, но все сообщество SO действительно приятно. Опять явыложу код.

Основной класс:

import javax.swing.*;

public class Game extends JFrame{
public static void main(String[] args){
    new Game();
}
public Game(){

    add(new Board());

    setTitle("Hi mom");
    setSize(555,330);
    setResizable(false);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(3);
    setVisible(true);

}
}

Класс платы:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Board extends JPanel implements ActionListener {

Image background;
Player p;
boolean moving;

public Board() {

    setFocusable(true);
    requestFocus();

    addKeyListener(new KeyInputEvents());

    Timer timer = new Timer(25, this);
    timer.start();

    ImageIcon img = new ImageIcon(getClass().getResource("images/map.png"));
    background = img.getImage();

    p = new Player();

}

public void paint(Graphics g) {
    g.drawImage(background, 0, 0, null);
    g.drawImage(p.getPlayer(), p.getX(), p.getY(), null);
}

public void actionPerformed(ActionEvent e) {
    repaint();
}
public JPanel getBoard(){
    return this;
}
)

Класс игрока (это, вероятно, где-то не так):

import javax.swing.*;
import java.awt.*;
public class Player{
int x = 30;
int y = 187;
Image player;
public Player(){
    ImageIcon img = new ImageIcon(getClass().getResource("images/player.png"));
    player = img.getImage();
}
public Image getPlayer(){
    return player;
}
public void move(int x, int y){
    this.x += x;
    this.y += y;
}
public int getX(){
    return x;
}
public int getY(){
    return y;
}
)

Класс KeyInputEvents:

import java.awt.event.*;

import javax.swing.*;

public class KeyInputEvents extends KeyAdapter implements ActionListener{
int k;
boolean moving = true;
Player p = new Player();
public KeyInputEvents(){
    Timer timer = new Timer(25,this);
    timer.start();
}
public void keyPressed(KeyEvent e){
    k = e.getKeyCode();
    moving = true;
}
public void keyReleased(KeyEvent e){
    moving = false;
}
public void actionPerformed(ActionEvent e) {
    if(k == 'D' && moving == true){p.move(5,0);}
    if(k == 'A' && moving == true){p.move(-5,0);}
}

}

Ответы на вопрос(1)

Ваш ответ на вопрос