现在我正在实施国际象棋规则,我意识到我需要知道每个国际象棋棋子的位置。我已经提出了两个解决这个问题的方法
我开始编写带有选项2的代码,但它的速度非常复杂。如果我选择选项1,我认为可以编写更清晰的代码。
我的问题是我不知道如何将完整的对象放在按钮上,这样不仅可以在按钮上显示对象的图像,而且还可以轻松访问对象本身。这样我就可以简单地将对象传递给我的逻辑方法。
这样的解决方案是否可行?我在JPanel上使用带有JButton的gridlayout作为我的棋盘。我不知道你还需要什么,所以只要求进一步的细节。
答案 0 :(得分:4)
在这种情况下,您可以从程序逻辑或模型中分离出GUI, View ,这绝对是必须。部件的位置是模型的一部分,因此不应由GUI跟踪。 GUI的唯一作用是显示模型的状态,并在用户尝试更改其状态时通过Control向模型报告。所以我建议你创建你的模型,它可能是由几个或更多类组成的复杂野兽。它将具有代表董事会的逻辑类,ChessSquare,ChessPieces,Moves,一件作品的合法动作,用户以及任何AI引擎。
一个好的经验法则是编写模型,使其与GUI库无关,这意味着它应该适用于Swing GUI,控制台程序,在线程序或甚至是Android程序。