Java - 图形绘画

时间:2012-11-17 16:02:03

标签: java swing oop graphics jframe

我正在尝试开发一个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课应该延伸什么?

3 个答案:

答案 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)

你的课很好,但我建议扩展课程。此类通常称为SpriteActionGameObject,其中包含基本信息,如

<强> 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);