在我的程序中将 swing 和 awt 类 用于我的非图形相关 类 是不好的做法吗?
Is it bad practice to use swing and awt classes for my non-graphics related classes in my programs?
所以,假设我有一些游戏,例如 Pong。显然,一般来说,您不想将游戏逻辑混合到图形 class 中,因此 Ball 或 Paddle 的 class 与实际绘制它们的 JPanel 是分开的。 Ball 具有球的移动逻辑、当前位置、命中检测等。但是,在我的 Ball class 中使用来自 Swing 和 awt 的图形 classes 对我来说是不好的做法吗?例如,如果我要使用 java.awt.Rectangle 来确定碰撞箱。虽然我没有在class中绘制它,但我正在使用它。或者如果我要使用 Java.awt.Point 来存储坐标。
顺便说一下,我问的原因是因为我在这个网站上被多次告知不要将图形与其他部分混在一起。
在非图形中使用矩形 class:(这是不好的做法吗?)
public class Ball {
static Rectangle hitbox = new Rectangle(0,10,20,20);
static void checkHit() {
if(hitbox.intersects(Paddle.hitbox) //do something
}
}
我的图形class:
public class DrawMyStuff extends JPanel {
void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.BLACK);
Graphics2D g2d = (Graphics2D) g;
g2d.draw(Ball.hitbox);
}
}
我想说的是,在大多数情况下,你不应该这样做。
规则例外
然而,在该包中有一组(小的)助手 类 实际上只是 "nice" 类型的数据持有者。既然已经有了轮子,为什么还要发明轮子?在我的世界中,这些将是 "okay to use"。
- 维度
- 插图
- 点
- 矩形(以及所有其他
Shape
,如多边形、面积等)
这些可用于描述图形问题,但它们不直接与屏幕资源相关联。
所以,假设我有一些游戏,例如 Pong。显然,一般来说,您不想将游戏逻辑混合到图形 class 中,因此 Ball 或 Paddle 的 class 与实际绘制它们的 JPanel 是分开的。 Ball 具有球的移动逻辑、当前位置、命中检测等。但是,在我的 Ball class 中使用来自 Swing 和 awt 的图形 classes 对我来说是不好的做法吗?例如,如果我要使用 java.awt.Rectangle 来确定碰撞箱。虽然我没有在class中绘制它,但我正在使用它。或者如果我要使用 Java.awt.Point 来存储坐标。
顺便说一下,我问的原因是因为我在这个网站上被多次告知不要将图形与其他部分混在一起。
在非图形中使用矩形 class:(这是不好的做法吗?)
public class Ball {
static Rectangle hitbox = new Rectangle(0,10,20,20);
static void checkHit() {
if(hitbox.intersects(Paddle.hitbox) //do something
}
}
我的图形class:
public class DrawMyStuff extends JPanel {
void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.BLACK);
Graphics2D g2d = (Graphics2D) g;
g2d.draw(Ball.hitbox);
}
}
我想说的是,在大多数情况下,你不应该这样做。
规则例外
然而,在该包中有一组(小的)助手 类 实际上只是 "nice" 类型的数据持有者。既然已经有了轮子,为什么还要发明轮子?在我的世界中,这些将是 "okay to use"。
- 维度
- 插图
- 点
- 矩形(以及所有其他
Shape
,如多边形、面积等)
这些可用于描述图形问题,但它们不直接与屏幕资源相关联。