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

标签 java swing graphics awt

那么,假设我有一些游戏,例如 Pong。显然,一般来说,您不想将游戏逻辑混合到图形类中,因此 Ball 或 Paddle 类与实际绘制它们的 JPanel 是分开的。 Ball 具有球的移动逻辑、当前位置、命中检测等。但是,在我的 Ball 类中使用 Swing 和 awt 中的图形类对我来说是不好的做法吗?例如,如果我要使用 java.awt.Rectangle 来确定碰撞框。尽管我没有在这个类上画它,但我正在使用它。或者如果我要使用 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
    }

}

我的图形类:

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

最佳答案

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

规则的异常(exception)情况

然而,在该包中有一组(小的)辅助类,它们实际上只是“nice”类型的数据持有者。既然已经有了轮子,为什么还要发明轮子?这些在我的世界中“可以使用”。

  • 维度
  • 插图
  • 矩形(以及所有其他 Shape,如多边形、面积等)

这些可用于描述图形问题,但它们不直接耦合到屏幕资源。

关于java - 在我的程序中为我的非图形相关类使用 swing 和 awt 类是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358854/

相关文章:

java - 如何使用此代码在 RandomAccessFile 中搜索字符串?

java - 如何正确从文件加载 JFrame?

c++ - 纹理像素操作中更新方法的内存管理

java - JLabel - 是否可以设置 RenderingHints.VALUE_TEXT_ANTIALIAS_OFF?

java - PointPlacemarks 的绘制顺序

java - 问题子类化 JTextField : initial text value is not displayed

java - 如何在登录屏幕上重定向 Spring 安全并发 session 控制 'message'?

java - dispatchKeyEvent 调用方法两次

java - 使用 Java Swing 时实现 Runnable

r - R中系统发育图上的彩色线条