在使用 JPanel 在 Java 中制作国际象棋游戏时,是否有一种方法可以返回容器是否包含任何内容?例如,通过定义一个这样的数组:JPanel [8][8] 我们要检查广场[i][j] 中是否有人,这样我们就可以检查玩家的移动是否合法。有没有办法检查??
问问题
445 次
2 回答
4
我建议不要检查 JPanel,而是将当前棋盘位置存储在单独的数据结构中。您通常会定义一个类来存储具有访问器功能的板,以访问这些部件,例如:
public class Board {
private Piece[][] squares;
....
code to set up board etc.
....
public Piece getPiece(int x, int y) {
return squares[x][y];
}
}
这种方法为您提供了几个优点:
- 您可以将棋盘位置的表示与 GUI 显示分离。这很重要——您通常希望在不受屏幕显示约束的情况下对棋盘位置进行处理(例如评估它们、搜索可能的移动等)。
- 您可以以任何您喜欢的方式构建板的内部表示,同时向使用板的其他代码呈现一个很好的封装视图
- 性能会更好:与查询/修改 GUI 组件树相比,电路板的简单内存表示更轻量级且访问速度更快。
于 2012-12-29T10:01:07.617 回答
0
给我发消息,我的电脑出了问题,目前似乎无法发表评论,但我前段时间做了一个跳棋游戏,我会把源代码发给你。它不完整,但它确实绘制了棋盘和棋子。它还检查鼠标点击和可玩方块。它可能有用作为参考。对您的问题的快速回答是我不会使用 a JPanel
,而是创建一个扩展的 Space 类Rectangle
或Rectangle2D
,这些类具有执行您想要的操作的方法,而据我所知JPanel
该类没有。
于 2012-12-29T11:37:33.777 回答