package Practice.GUI.KeyBinding.P2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class Game2 {
Action Up, Down, Left, Right, Up2, Down2, Left2, Right2;
JFrame frame;
JLabel label1, label2;
Game2() {
ImageIcon icon = new ImageIcon("rocket.png");
Image resize = icon.getImage().getScaledInstance(50, 70, Image.SCALE_DEFAULT);
ImageIcon ric = new ImageIcon(resize);
ImageIcon icon2 = new ImageIcon("rocket.png");
Image resize2 = icon.getImage().getScaledInstance(50, 70, Image.SCALE_DEFAULT);
ImageIcon ric2 = new ImageIcon(resize2);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLayout(null);
frame.setLocationRelativeTo(null);
frame.getContentPane().setBackground(Color.black);
label1 = new JLabel();
label1.setBounds(0, 300, 100, 100);
label1.setIcon(ric);
label2 = new JLabel();
label2.setBounds(430, 300, 100, 100);
label2.setIcon(ric2);
Up = new UpAction();
Down = new DownAction();
Left = new LeftAction();
Right = new RightAction();
Up2 = new UpAction();
Down2 = new DownAction();
Left2 = new LeftAction();
Right2 = new RightAction();
label1.getInputMap().put(KeyStroke.getKeyStroke('w'), "upAction1");
label1.getActionMap().put("upAction1", Up);
label1.getInputMap().put(KeyStroke.getKeyStroke('s'), "downAction1");
label1.getActionMap().put("downAction", Down);
label1.getInputMap().put(KeyStroke.getKeyStroke('a'), "leftAction1");
label1.getActionMap().put("leftAction1", Left);
label1.getInputMap().put(KeyStroke.getKeyStroke('d'), "rightAction1");
label1.getActionMap().put("rightAction1", Right);
label2.getInputMap().put(KeyStroke.getKeyStroke("UP"), "upAction2");
label2.getActionMap().put("upAction2", Up2);
label2.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "downAction2");
label2.getActionMap().put("downAction2", Down2);
label2.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), "leftAction2");
label2.getActionMap().put("leftAction2", Left2);
label2.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), "rightAction2");
label2.getActionMap().put("rightAction2", Right2);
frame.add(label1);
frame.add(label2);
frame.setVisible(true);
}
public class UpAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == label1) {
label1.setLocation(label1.getX(), label1.getY() - 10);
} else if (e.getSource() == label2) {
label2.setLocation(label2.getX(), label2.getY() - 10);
}
}
}
public class DownAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == label1) {
label1.setLocation(label1.getX(), label1.getY() + 10);
} else if (e.getSource() == label2) {
label2.setLocation(label2.getX(), label2.getY() + 10);
}
}
}
public class LeftAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == label1) {
label1.setLocation(label1.getX() - 10, label1.getY());
} else if (e.getSource() == label2) {
label2.setLocation(label2.getX() - 10, label2.getY());
}
}
}
public class RightAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == label1) {
label1.setLocation(label1.getX() + 10, label1.getY());
} else if (e.getSource() == label2) {
label2.setLocation(label2.getX() + 10, label2.getY());
}
}
}
}
I'm working on a simple two-player game interface using Java Swing, where I have two rocket icons that players can move using keyboard inputs. The rockets should move in four directions (up, down, left, right) based on the WASD keys for the first rocket and the arrow keys for the second rocket.
However, I've encountered an issue where the arrow keys are not moving the labels (rockets) as expected. The WASD keys work fine for the first rocket, but the arrow keys seem to have no effect on the second rocket's movement.