I am developing a simple 2D game which contain two players. I am moving player 1 with keys W, A, S and D. Other players is controlled by arrow keys.
The problem I am facing is that when any of the arrow key is kept pressed for moving player 2, keys W, S, D and A does work for player 1 and vice versa.
I have seen some answers like this, but it didn't resolved my problem.
I have a main class Gameplay and made two inner class Player1Listener and Player2Listener (implementing KeyListener).
Example code for one class is shown below, other sub class looks like same.
private class Player1Listener implements KeyListener
{
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()== KeyEvent.VK_W)
{
player1right = false;
player1left = false;
player1down = false;
player1up = true;
player1Y-=10;
}
if(e.getKeyCode()== KeyEvent.VK_A)
{
player1right = false;
player1left = true;
player1down = false;
player1up = false;
player1X-=10;
}
if(e.getKeyCode()== KeyEvent.VK_S)
{
player1right = false;
player1left = false;
player1down = true;
player1up = false;
player1Y+=10;
}
if(e.getKeyCode()== KeyEvent.VK_D)
{
player1right = true;
player1left = false;
player1down = false;
player1up = false;
player1X+=10;
}
}
}
I am adding these key listeners in Gameplay constructor like
addKeyListener(new player1Listener());