2

我正在尝试开发一个 Java 破砖机(如 DxBall)游戏,我想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课程应该扩展什么?

4

3 回答 3

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方法时简单地调用。

注意:构造函数没有返回类型。

于 2012-11-17T16:05:36.337 回答
3

你的Ball课看起来不错。它不需要扩展任何东西。您需要将游戏对象中的对象传递给Graphics方法。paintComponentBall draw

于 2012-11-17T16:06:14.800 回答
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);
于 2012-11-17T17:07:36.297 回答