I have this program that when pressing arrow keys it exceeds the frame. However I want the shape to bounce back when exceeding that border. Can anyone help me on this.
{
JFrame frame = new JFrame("PacMan");
PacManObject panel = new PacManObject();
panel.setFocusable(true);
panel.setRequestFocusEnabled(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.setVisible(true);
frame.add(panel);
panel.addKeyListener(panel);
}
public static void main(String[] args) {
Runnable runnable = new Runnable(){
@Override
public void run() {
new PacMan();
}
};EventQueue.invokeLater(runnable);
}
class PacManObject extends JPanel implements KeyListener{
private int xLocation = 100;
private int yLocation = 100;
private int mouth = 280;
private int angle = 45;
private int xrandomLocation = 300;
private int yrandomLocation = 400;
private int xLocationEyes = 115;
private int yLocationEyes = 115;
Where I draw my shapes
@Override
public void paintComponent(Graphics graphics)
{
super.paintComponent(graphics);
//pacman
graphics.setColor(Color.yellow);
graphics.fillArc(xLocation, yLocation, 100, 100, angle, mouth);
//eyes
graphics.setColor(Color.BLACK);
graphics.fillOval(xLocationEyes, yLocationEyes, 20, 20);
food(graphics);
}
When pressing the arrow keys
@Override
public void keyPressed(KeyEvent keyboard) {
int keyboardPress = keyboard.getKeyCode();
if(keyboardPress == KeyEvent.VK_RIGHT){
xLocation += 30;
xLocationEyes += 30;
angle = 45;
repaint();
}
else if(keyboardPress == KeyEvent.VK_LEFT){
angle = -145;
xLocation -= 30;
xLocationEyes -= 30;
repaint();
}
}