Java Swing 2D小游戏: how to modelize the view?

标签 java swing java-2d

在小型 java swing 2D 游戏中,创建棋盘 View 的最佳解决方案是什么?

  1. 为棋盘使用一个组件并一次自定义绘制它和方格的每个方 block ?
  2. 为棋盘使用一个组件,并创建另一个组件来对正方形进行建模,并使用其自己的绘制组件仅对正方形进行处理。使用布局将每个 Square 实例放置在面板中?

我知道这是主观的,我不想为此争吵。我只需要一些线索来确定我应该走哪条路。我开始了一个副项目,我一直在使用 1),感觉有什么不对。

最佳答案

只需一个绘图面板/容器就可以处理所有内容。

考虑一个基于图 block 的游戏。如果使用您的第二个解决方案,每个图 block 都是一个对象,内存会猛增,游戏会变慢。

使用第一个选项你很灵活。你画你想要的,你有面板坐标,所以一切都是相对的。使用基于图 block 的示例,您会知道面板的高度和宽度,绘制正方形并适当增加 X 和 Y 坐标。

GUI 框架(例如 Swing 或 .NET 的 Winforms)非常昂贵,因为它们包含许多游戏不需要的其他内容。因此,要回答您的问题,请选择选项一,而不是说为棋盘上的每个棋子使用一个面板。

将第二种方法与第一种方法结合使用的一个很好的解决方案是 Flyweight Design Pattern .您仍然可以使用 OO 对象,但您将拥有通常数量的一小部分。检查一下。

关于Java Swing 2D小游戏: how to modelize the view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284460/

相关文章:

Java:如果行由 AbstractTableModel 插入,如何将行(数据)显式插入 JTable

java - 如何在 updateUiChanged() 事件之前捕获 Java windowIconified() 和 windowIDeconified() ?

java - 将 Shape 的中心与 JPanel 的中心对齐

Java GUI 旋转和平移矩形

java - 找不到旧的 Java JNA 版本

java - Getter 和 Setter 不起作用?

java - 如何通过 JOptionPane 捕获的用户输入将数据添加到 JList?

Java2d : Translate the axes

java - Java中的变量声明和初始化

java - 基于项目的Android应用