在我的程序中为我的非图形相关类使用swing和awt类是不好的做法吗?

时间:2015-12-18 15:24:48

标签: java swing graphics awt

所以,让我说我有一些游戏,以Pong为例。显然,你通常不想将游戏逻辑混合到图形类中,所以Ball或Paddle的类是从JPanel中分离的,它实际上是绘制它们的。 Ball有球的运动逻辑,它的当前位置,命中检测等。但是,在我的Ball类中使用Swing和awt的图形类是不好的做法?例如,如果我使用java.awt.Rectangle来确定hitbox。虽然我没有在这堂课中画画,但我正在使用它。或者,如果我使用Java.awt.Point来存储坐标。

顺便说一下,我问的原因是因为我在这个网站上多次被告知不要将图形与其他部分混合在一起。

在非图形类中使用Rectangle:(这是不好的做法吗?)

public class Ball {
    static Rectangle hitbox = new Rectangle(0,10,20,20);
    static void checkHit() {
        if(hitbox.intersects(Paddle.hitbox) //do something
    }

}

My Graphics类:

public class DrawMyStuff extends JPanel {
   void paintComponent(Graphics g) {
        super.paintComponent(g);
        setBackground(Color.BLACK);
        Graphics2D g2d = (Graphics2D) g;
        g2d.draw(Ball.hitbox);
   }
}

1 个答案:

答案 0 :(得分:6)

我说在大多数情况下,你不应该这样做。

规则的例外情况

然而,该包中有一组(小)辅助类,实际上只是" nice"的数据持有者。类型。为什么在你已经拿到它们时会发明轮子?这些将是"可以使用"在我的世界里。

  • 尺寸
  • 插图
  • 矩形(以及所有其他Shape,如Polygon,Area等)

这些问题可用于描述图形问题,而不会直接耦合到屏幕资源上。