I’m trying to create a java game in which balls randomly drop from the top of the screen and we need to catch the balls using a catcher which is located at the bottom of the screen.
I’m having a difficult time figuring out how to actually draw this onto my JFrame.
I’ve got a class for my ‘catcher’, ‘ball’, ‘game space’ and I would like to put it all together.
How do I draw my ‘catcher’ onto my screen?
Currently, I have a ‘Game’ class which looks like this.
public class Game extends JFrame implements KeyListener {
GameScreen gameScreen;
Catcher playerOneCatcher;
public static void main (String[] args) {
new Game();
}
public Game() {
super("CATCH");
setSize(640,480);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
setResizable(false);
addKeyListener(this);
this.gameScreen = new GameScreen();
this.playerOneCatcher = new Catcher(40, 10);
}
I’ve tried something like this in my Catcher class…
public void paintComponent(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(positionX, positionY, this.width, this.height);
}
However, its not showing on my screen.
Any help would be greatly appreciated.
You need to rethink your strategy here. Swing is a component framework, with most components intended for building user interfaces. These components are not optimised for what’s typically required in games. You want to look into double-buffering, sprites etc. The way to go will be to read up on Graphics2D class (or abandon Swing altogether!)
However answering to your question – if Catcher is a Swing component – you need to add it to the “parent” component, e.g. like this:
Same goes to
gameScreenbut from your snippet it is not obvious what this component is. I hope this helps.Also, check this out for some ideas: 2D Java Game. Moving sprite above tiled images