所以,让我说我有一些游戏,以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 } }
我的Graphics类:
public class DrawMyStuff extends JPanel { void paintComponent(Graphics g) { super.paintComponent(g); setBackground(Color.BLACK); Graphics2D g2d = (Graphics2D) g; g2d.draw(Ball.hitbox); } }
Jan.. 6
我会说,在大多数情况下,你不应该这样做.
规则的例外情况
然而,在该包中有一组(小)辅助类,实际上只是"好"类型的数据持有者.为什么在你已经拿到它们时会发明轮子?这些在我的世界里"可以使用".
尺寸
插图
点
矩形(和所有其他Shape
像多边形,区域等)
这些可用于描述图形问题,而它们不直接耦合到屏幕资源.
我会说,在大多数情况下,你不应该这样做.
规则的例外情况
然而,在该包中有一组(小)辅助类,实际上只是"好"类型的数据持有者.为什么在你已经拿到它们时会发明轮子?这些在我的世界里"可以使用".
尺寸
插图
点
矩形(和所有其他Shape
像多边形,区域等)
这些可用于描述图形问题,而它们不直接耦合到屏幕资源.