我正在尝试开发一个Java brick breaker(比如DxBall)游戏,我想用自己的draw方法创建Ball
对象。
我正在尝试做什么:
public class Ball {
private int x, y, diameter;
public void Ball(){
x = 0;
y = 0;
diameter = 20;
}
public void draw(Graphics g){
g.setPaint(Color.red);
g.fillOval(x, y, diameter, diameter);
}
}
因此,我的游戏引擎扩展JFrame
,其paintComponent
方法将调用游戏对象绘制方法。总而言之,在Java中进行面向对象游戏是否正确?我的Ball
课应该延伸什么?
答案 0 :(得分:3)
如果您希望将Ball
设为图形组件,则可以扩展JComponent
:
public class Ball extends JComponent {
private int x;
private int y
private int diameter;
public Ball() {
x = 0;
y = 0;
diameter=20;
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setPaint(Color.red);
g.fillOval(x, y, diameter, diameter);
}
}
当您希望绘制组件而不是自定义repaint
方法时,只需调用draw
。
注意:构造函数没有返回类型。
答案 1 :(得分:3)
您的Ball
课程似乎没问题。它不需要扩展任何东西。您需要将Graphics
对象从游戏对象的paintComponent
传递到Ball
draw
方法。
答案 2 :(得分:1)
你的课很好,但我建议扩展课程。此类通常称为Sprite
或Action
或GameObject
,其中包含基本信息,如
<强> image (or animation), position, collision rect and some basic functions like get and set it's position, speed and some collision detection functions if you wish.
强>
一些资源。
希望他们有所帮助。要绘制对象,请执行g.drawImage(ball.image, ball.x, ball.y, null);