【发布时间】:2015-06-29 02:28:42
【问题描述】:
我正在构建一个国际象棋 gui;我有一个制作棋盘的按钮网格,我将每个棋子的图像设置为按钮图标。它的工作方式是每个棋子都有自己的类,它扩展了 Piece 超类。这些类中的每一个都有一个 getImage() 方法,该方法返回相应的图像。然后我将该图像设置为按钮图标。
现在我正在实施国际象棋规则,我意识到我需要知道每个棋子的位置。我想出了两个解决这个问题的方法
- 跟踪实例变量中的坐标。将整个对象放在按钮上,以便轻松检索。
- 每次单击按钮时获取坐标。基本上,点击板上的一个按钮,我得到那个按钮的坐标,然后我通过一些我必须编写的标识符方法传递那个按钮的图标来得到那个按钮上的块。然后我可以使用这些信息来使用我的逻辑方法,例如 getLegalMoves() 等。
我开始编写代码时考虑了选项 2,但它很快就变得过于复杂。如果我选择选项 1,我认为可以编写更简洁的代码。
我的问题是我不知道如何将一个完整的对象放在按钮上,这样不仅可以在按钮上显示对象的图像,而且可以轻松访问对象本身。这样我就可以简单地将对象传递到我的逻辑方法中。
这样的解决方案可能吗?我在 JPanel 上为我的棋盘使用带有 JButton 的 gridlayout。我不知道您可能还需要什么,所以请询问更多详细信息。
【问题讨论】:
-
您应该从模型开始。模型决定了它可以改变的规则并维护所有部分的状态。 UI 然后根据模型的状态更新它的状态